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: jiangyiwen <jiangyiwen@huawei.com>
Reviewed-by: Joseph Qi <joseph.qi@huawei.com>
Cc: Mark Fasheh <mfasheh@suse.de>
Cc: Joel Becker <jlbec@evilplan.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
                }
 
                status = ocfs2_info_scan_inode_alloc(osb, inode_alloc, blkno, oifi, i);
-               if (status < 0)
-                       goto bail;
 
                iput(inode_alloc);
                inode_alloc = NULL;
+
+               if (status < 0)
+                       goto bail;
        }
 
        o2info_set_request_filled(&oifi->ifi_req);
 
        status = ocfs2_inode_lock(inode_alloc_inode, &alloc_bh, 0);
        if (status < 0) {
                mutex_unlock(&inode_alloc_inode->i_mutex);
+               iput(inode_alloc_inode);
                mlog(ML_ERROR, "lock on alloc inode on slot %u failed %d\n",
                     (u32)suballoc_slot, status);
                goto bail;