Messages in this thread Patch in this message |  | | Date | Fri, 1 Sep 2017 01:33:53 -0700 (PDT) | | From | David Rientjes <> | | Subject | Re: [PATCH] mm: kvfree the swap cluster info if the swap file is unsatisfactory |
| |
On Thu, 31 Aug 2017, Darrick J. Wong wrote:
> 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. >
Hopefully this can make it into 4.13.
Fixes: 54f180d3c181 ("mm, swap: use kvzalloc to allocate some swap data structures") Cc: stable@vger.kernel.org [4.12]
> Found by running generic/357 from xfstests. > > Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Acked-by: David Rientjes <rientjes@google.com>
But I think there's also a memory leak and we need this on top of your fix:
mm, swapfile: fix swapon frontswap_map memory leak on error
Free frontswap_map if an error is encountered before enable_swap_info().
Signed-off-by: David Rientjes <rientjes@google.com> --- mm/swapfile.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/mm/swapfile.c b/mm/swapfile.c --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -3053,6 +3053,7 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags) spin_unlock(&swap_lock); vfree(swap_map); kvfree(cluster_info); + kvfree(frontswap_map); if (swap_file) { if (inode && S_ISREG(inode->i_mode)) { inode_unlock(inode);
|  |