Message ID | 20221208023233.1231330-5-yebin@huaweicloud.com |
---|---|
State | Accepted |
Headers | show |
Series | Fix two issue about ext4 extended attribute | expand |
On Thu, Dec 08, 2022 at 10:32:33AM +0800, Ye Bin wrote: > From: Ye Bin <yebin10@huawei.com> > > There is issue as follows when do setxattr with inject fault: > [localhost]#fsck.ext4 -fn /dev/sda > e2fsck 1.46.6-rc1 (12-Sep-2022) > Pass 1: Checking inodes, blocks, and sizes > Pass 2: Checking directory structure > Pass 3: Checking directory connectivity > Pass 4: Checking reference counts > Unattached zero-length inode 15. Clear? no > > Unattached inode 15 > Connect to /lost+found? no > > Pass 5: Checking group summary information > > /dev/sda: ********** WARNING: Filesystem still has errors ********** > > /dev/sda: 15/655360 files (0.0% non-contiguous), 66755/2621440 blocks > > This occurs in 'ext4_xattr_inode_create()'. If 'ext4_mark_inode_dirty()' > fails, dropping i_nlink of the inode is needed. Or will lead to inode leak. > > Signed-off-by: Ye Bin <yebin10@huawei.com> > Reviewed-by: Jan Kara <jack@suse.cz> Applied, thanks. - Ted
diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c index 99dacb0393fa..aad7de2e366a 100644 --- a/fs/ext4/xattr.c +++ b/fs/ext4/xattr.c @@ -1442,6 +1442,9 @@ static struct inode *ext4_xattr_inode_create(handle_t *handle, if (!err) err = ext4_inode_attach_jinode(ea_inode); if (err) { + if (ext4_xattr_inode_dec_ref(handle, ea_inode)) + ext4_warning_inode(ea_inode, + "cleanup dec ref error %d", err); iput(ea_inode); return ERR_PTR(err); }