From: Darrick J. Wong Date: Fri, 8 Sep 2017 23:13:25 +0000 (-0700) Subject: mm: kvfree the swap cluster info if the swap file is unsatisfactory X-Git-Tag: v4.12.13~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=637f25e5ba949eed56e0b00ca448a79229e9b3a6;p=thirdparty%2Fkernel%2Fstable.git mm: kvfree the swap cluster info if the swap file is unsatisfactory commit 8606a1a94da5c4e49c0fb28af62d2e75c6747716 upstream. If initializing a small swap file fails because the swap file has a problem (holes, etc.) then we need to free the cluster info as part of cleanup. Unfortunately a previous patch changed the code to use kvzalloc but did not change all the vfree calls to use kvfree. Found by running generic/357 from xfstests. Link: http://lkml.kernel.org/r/20170831233515.GR3775@magnolia Fixes: 54f180d3c181 ("mm, swap: use kvzalloc to allocate some swap data structures") Signed-off-by: Darrick J. Wong Reviewed-by: "Huang, Ying" Acked-by: David Rientjes Cc: Hugh Dickins Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Greg Kroah-Hartman --- diff --git a/mm/swapfile.c b/mm/swapfile.c index 4f6cba1b66322..3a21b2b595460 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -2903,7 +2903,7 @@ bad_swap: p->flags = 0; spin_unlock(&swap_lock); vfree(swap_map); - vfree(cluster_info); + kvfree(cluster_info); if (swap_file) { if (inode && S_ISREG(inode->i_mode)) { inode_unlock(inode);