]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: fix memory leak in xfs_iext_free_last_leaf
authorShu Wang <shuwang@redhat.com>
Mon, 27 Nov 2017 17:47:07 +0000 (11:47 -0600)
committerEric Sandeen <sandeen@redhat.com>
Mon, 27 Nov 2017 17:47:07 +0000 (11:47 -0600)
Source kernel commit: 6818caa4cdc95d9ec5642a4439f8271a80189b48

found the issue by kmemleak.
unreferenced object 0xffff8800674611c0 (size 16):
xfs_iext_insert+0x82a/0xa90 [xfs]
xfs_bmap_add_extent_hole_delay+0x1e5/0x5b0 [xfs]
xfs_bmapi_reserve_delalloc+0x483/0x530 [xfs]
xfs_file_iomap_begin+0xac8/0xd40 [xfs]
iomap_apply+0xb8/0x1b0
iomap_file_buffered_write+0xac/0xe0
xfs_file_buffered_aio_write+0x198/0x420 [xfs]
xfs_file_write_iter+0x23f/0x2a0 [xfs]
__vfs_write+0x23e/0x340
vfs_write+0xe9/0x240
SyS_write+0xa1/0x120
do_syscall_64+0xda/0x260

Signed-off-by: Shu Wang <shuwang@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
libxfs/xfs_iext_tree.c

index 3954341af503c9104ddeb8625f1942a922832600..3fcda5fa21c3d7c0875b0eb29ea02407d2b0b92c 100644 (file)
@@ -850,9 +850,9 @@ static void
 xfs_iext_free_last_leaf(
        struct xfs_ifork        *ifp)
 {
-       ifp->if_u1.if_root = NULL;
        ifp->if_height--;
        kmem_free(ifp->if_u1.if_root);
+       ifp->if_u1.if_root = NULL;
 }
 
 void