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 PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 5 Jan 2021 13:58:00 +0800 From: yangerkun <yangerkun@...wei.com> To: Jan Kara <jack@...e.cz> CC: <linux-ext4@...r.kernel.org>, <tytso@....edu>, <adilger.kernel@...ger.ca>, <yi.zhang@...wei.com>, <lihaotian9@...wei.com>, <lutianxiong@...wei.com>, <linfeilong@...wei.com> Subject: Re: [PATCH v2] ext4: fix bug for rename with RENAME_WHITEOUT 在 2021/1/4 22:19, Jan Kara 写道: > On Tue 29-12-20 17:02:08, yangerkun wrote: >> ext4_rename will create a special inode for whiteout and use this 'ino' >> to replace the source file's dir entry 'ino'. Once error happens >> latter(small ext4 img, and consume all space, so the rename with dst >> path not exist will fail due to the ENOSPC return from ext4_add_entry in >> ext4_rename), the cleanup do drop the nlink for whiteout, but forget to >> restore 'ino' with source file. This will lead to "deleted inode >> referenced". >> >> Signed-off-by: yangerkun <yangerkun@...wei.com> > > Thanks for the patch! It looks mostly good, just one comment below: > >> end_rename: >> - brelse(old.dir_bh); >> - brelse(old.bh); >> - brelse(new.bh); >> if (whiteout) { >> + ext4_setent(handle, &old, >> + old.inode->i_ino, old_file_type); > > I'm wondering here - how is it correct to reset the 'old' entry whenever > whiteout != NULL? I'd expect this to be guarded by the if (retval) check... Thanks a lot! This is actually a bug and sorry for that. We need check retval to prevent call for ext4_setent for the correct case. I will resend the patch! > > Honza > >> if (retval) >> drop_nlink(whiteout); >> unlock_new_inode(whiteout); >> iput(whiteout); >> } >> + brelse(old.dir_bh); >> + brelse(old.bh); >> + brelse(new.bh); >> if (handle) >> ext4_journal_stop(handle); >> return retval; >> -- >> 2.25.4 >>
Powered by blists - more mailing lists