mirror of https://gitee.com/openkylin/linux.git
ocfs2: Release buffer_head in case of error in ocfs2_double_lock.
In ocfs2_double_lock, when ocfs2_inode_lock for inode1 fails, we just unlock inode2 and return without releasing buffer we get from inode_lock(inode2). The good thing is that it is freed by the only caller ocfs2_rename when it exits. But I don't think this is a right way for error handling. We should free the buffer_head we get in ocfs2_double_lock before exit so that the caller doesn't need to take care of it. Signed-off-by: Tao Ma <boyu.mt@taobao.com> Signed-off-by: Joel Becker <joel.becker@oracle.com>
This commit is contained in:
parent
cfc069d3fa
commit
1e6d9153df
|
@ -1017,8 +1017,11 @@ static int ocfs2_double_lock(struct ocfs2_super *osb,
|
|||
* An error return must mean that no cluster locks
|
||||
* were held on function exit.
|
||||
*/
|
||||
if (oi1->ip_blkno != oi2->ip_blkno)
|
||||
if (oi1->ip_blkno != oi2->ip_blkno) {
|
||||
ocfs2_inode_unlock(inode2, 1);
|
||||
brelse(*bh2);
|
||||
*bh2 = NULL;
|
||||
}
|
||||
|
||||
if (status != -ENOENT)
|
||||
mlog_errno(status);
|
||||
|
|
Loading…
Reference in New Issue