lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <20150304150339.GB32219@quack.suse.cz> Date: Wed, 4 Mar 2015 16:03:39 +0100 From: Jan Kara <jack@...e.cz> To: Konstantin Khlebnikov <khlebnikov@...dex-team.ru> Cc: Andreas Dilger <adilger.kernel@...ger.ca>, linux-ext4@...r.kernel.org, Theodore Ts'o <tytso@....edu>, linux-kernel@...r.kernel.org Subject: Re: [PATCH] ext4: fix bh leak on error paths in ext4_rename() and ext4_cross_rename() On Tue 03-03-15 14:17:19, Konstantin Khlebnikov wrote: > Release references to buffer-heads if ext4_journal_start() fails. Looks good. You can add: Reviewed-by: Jan Kara <jack@...e.cz> Honza > > Signed-off-by: Konstantin Khlebnikov <khlebnikov@...dex-team.ru> > Fixes: 5b61de757535 ("ext4: start handle at least possible moment when renaming files") > --- > fs/ext4/namei.c | 21 +++++++++++++++------ > 1 file changed, 15 insertions(+), 6 deletions(-) > > diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c > index 28fe71a2904c..8110dd20ad3f 100644 > --- a/fs/ext4/namei.c > +++ b/fs/ext4/namei.c > @@ -3264,12 +3264,18 @@ static int ext4_rename(struct inode *old_dir, struct dentry *old_dentry, > EXT4_INDEX_EXTRA_TRANS_BLOCKS + 2); > if (!(flags & RENAME_WHITEOUT)) { > handle = ext4_journal_start(old.dir, EXT4_HT_DIR, credits); > - if (IS_ERR(handle)) > - return PTR_ERR(handle); > + if (IS_ERR(handle)) { > + retval = PTR_ERR(handle); > + handle = NULL; > + goto end_rename; > + } > } else { > whiteout = ext4_whiteout_for_rename(&old, credits, &handle); > - if (IS_ERR(whiteout)) > - return PTR_ERR(whiteout); > + if (IS_ERR(whiteout)) { > + retval = PTR_ERR(whiteout); > + whiteout = NULL; > + goto end_rename; > + } > } > > if (IS_DIRSYNC(old.dir) || IS_DIRSYNC(new.dir)) > @@ -3433,8 +3439,11 @@ static int ext4_cross_rename(struct inode *old_dir, struct dentry *old_dentry, > handle = ext4_journal_start(old.dir, EXT4_HT_DIR, > (2 * EXT4_DATA_TRANS_BLOCKS(old.dir->i_sb) + > 2 * EXT4_INDEX_EXTRA_TRANS_BLOCKS + 2)); > - if (IS_ERR(handle)) > - return PTR_ERR(handle); > + if (IS_ERR(handle)) { > + retval = PTR_ERR(handle); > + handle = NULL; > + goto end_rename; > + } > > if (IS_DIRSYNC(old.dir) || IS_DIRSYNC(new.dir)) > ext4_handle_sync(handle); > > -- > To unsubscribe from this list: send the line "unsubscribe linux-ext4" in > the body of a message to majordomo@...r.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Jan Kara <jack@...e.cz> SUSE Labs, CR -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists