From: Ye Bin Date: Wed, 22 Jun 2022 09:02:23 +0000 (+0800) Subject: ext4: avoid remove directory when directory is corrupted X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=b24e77ef1c6d4dbf42749ad4903c97539cc9755a;p=linux.git ext4: avoid remove directory when directory is corrupted Now if check directoy entry is corrupted, ext4_empty_dir may return true then directory will be removed when file system mounted with "errors=continue". In order not to make things worse just return false when directory is corrupted. Signed-off-by: Ye Bin Reviewed-by: Jan Kara Link: https://lore.kernel.org/r/20220622090223.682234-1-yebin10@huawei.com Signed-off-by: Theodore Ts'o --- diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c index db4ba99d1cebe..1c6725ecca1ad 100644 --- a/fs/ext4/namei.c +++ b/fs/ext4/namei.c @@ -3067,11 +3067,8 @@ bool ext4_empty_dir(struct inode *inode) de = (struct ext4_dir_entry_2 *) (bh->b_data + (offset & (sb->s_blocksize - 1))); if (ext4_check_dir_entry(inode, NULL, de, bh, - bh->b_data, bh->b_size, offset)) { - offset = (offset | (sb->s_blocksize - 1)) + 1; - continue; - } - if (le32_to_cpu(de->inode)) { + bh->b_data, bh->b_size, offset) || + le32_to_cpu(de->inode)) { brelse(bh); return false; }