Commit 7dc3e839 authored by jiangyiwen's avatar jiangyiwen Committed by Linus Torvalds

ocfs2: iput inode alloc when failed locally

In ocfs2_info_handle_freeinode() and ocfs2_test_inode_bit() func, after
calls ocfs2_get_system_file_inode() to get inode ref, if calls
ocfs2_info_scan_inode_alloc() or ocfs2_inode_lock() failed, we should
iput inode alloc to avoid leaking the inode.
Signed-off-by: default avatarjiangyiwen <jiangyiwen@huawei.com>
Reviewed-by: default avatarJoseph Qi <joseph.qi@huawei.com>
Cc: Mark Fasheh <mfasheh@suse.de>
Cc: Joel Becker <jlbec@evilplan.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent da8ded40
...@@ -413,11 +413,12 @@ int ocfs2_info_handle_freeinode(struct inode *inode, ...@@ -413,11 +413,12 @@ int ocfs2_info_handle_freeinode(struct inode *inode,
} }
status = ocfs2_info_scan_inode_alloc(osb, inode_alloc, blkno, oifi, i); status = ocfs2_info_scan_inode_alloc(osb, inode_alloc, blkno, oifi, i);
if (status < 0)
goto bail;
iput(inode_alloc); iput(inode_alloc);
inode_alloc = NULL; inode_alloc = NULL;
if (status < 0)
goto bail;
} }
o2info_set_request_filled(&oifi->ifi_req); o2info_set_request_filled(&oifi->ifi_req);
......
...@@ -2894,6 +2894,7 @@ int ocfs2_test_inode_bit(struct ocfs2_super *osb, u64 blkno, int *res) ...@@ -2894,6 +2894,7 @@ int ocfs2_test_inode_bit(struct ocfs2_super *osb, u64 blkno, int *res)
status = ocfs2_inode_lock(inode_alloc_inode, &alloc_bh, 0); status = ocfs2_inode_lock(inode_alloc_inode, &alloc_bh, 0);
if (status < 0) { if (status < 0) {
mutex_unlock(&inode_alloc_inode->i_mutex); mutex_unlock(&inode_alloc_inode->i_mutex);
iput(inode_alloc_inode);
mlog(ML_ERROR, "lock on alloc inode on slot %u failed %d\n", mlog(ML_ERROR, "lock on alloc inode on slot %u failed %d\n",
(u32)suballoc_slot, status); (u32)suballoc_slot, status);
goto bail; goto bail;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment