Message ID | 1458610552-9845-22-git-send-email-quwenruo@cn.fujitsu.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 979811c..81b19193 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -751,6 +751,7 @@ retry: WB_SYNC_ALL); else if (ret) unlock_page(async_cow->locked_page); + kfree(hash); kfree(async_extent); cond_resched(); continue; @@ -876,6 +877,7 @@ retry: free_async_extent_pages(async_extent); } alloc_hint = ins.objectid + ins.offset; + kfree(hash); kfree(async_extent); cond_resched(); } @@ -892,6 +894,7 @@ out_free: PAGE_SET_WRITEBACK | PAGE_END_WRITEBACK | PAGE_SET_ERROR); free_async_extent_pages(async_extent); + kfree(hash); kfree(async_extent); goto again; }
We allocate a dedupe hash into async_extent, but forget to free it. Fix it by freeing the hash before freeing async_extent. Reported-by: Wang Xiaoguang <wangxg.fnst@cn.fujitsu.com> Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com> --- fs/btrfs/inode.c | 3 +++ 1 file changed, 3 insertions(+)