Btrfs: free inode struct when btrfs_new_inode fails
btrfs_new_inode doesn't call iput to free the inode when it fails. Signed-off-by: Shen Feng <shen@cn.fujitsu.com> Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
@@ -3481,9 +3481,11 @@ static struct inode *btrfs_new_inode(struct btrfs_trans_handle *trans,
|
|||||||
|
|
||||||
if (dir) {
|
if (dir) {
|
||||||
ret = btrfs_set_inode_index(dir, index);
|
ret = btrfs_set_inode_index(dir, index);
|
||||||
if (ret)
|
if (ret) {
|
||||||
|
iput(inode);
|
||||||
return ERR_PTR(ret);
|
return ERR_PTR(ret);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
* index_cnt is ignored for everything but a dir,
|
* index_cnt is ignored for everything but a dir,
|
||||||
* btrfs_get_inode_index_count has an explanation for the magic
|
* btrfs_get_inode_index_count has an explanation for the magic
|
||||||
@@ -3565,6 +3567,7 @@ fail:
|
|||||||
if (dir)
|
if (dir)
|
||||||
BTRFS_I(dir)->index_cnt--;
|
BTRFS_I(dir)->index_cnt--;
|
||||||
btrfs_free_path(path);
|
btrfs_free_path(path);
|
||||||
|
iput(inode);
|
||||||
return ERR_PTR(ret);
|
return ERR_PTR(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user