mm/khugepaged: Avoid possible memory leak in failure path
Subsystems (2)
PATCH 1/1 mm/khugepaged: Avoid possible memory leak in failure path
From: "Souptick Joarder (HPE)" <[email protected]>
smatch warnings:mm/khugepaged.c:2409 madvise_collapse() warn: possible memory leak of 'cc'
Avoiding possible memory leak.
Reported-by kernel test robot <[email protected]>
Reported-by Dan Carpenter <[email protected]>
Signed-off-by Souptick Joarder (HPE) <[email protected]>
--- mm/khugepaged.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
mm/khugepaged.c +6 -6
@@ -2397,12 +2397,6 @@ int madvise_collapse(struct vm_area_struct *vma, struct vm_area_struct **prev,BUG_ON (vma->vm_start > start);BUG_ON (vma->vm_end < end); - cc =kmalloc (sizeof (*cc),GFP_KERNEL ); -if (!cc) -return -ENOMEM ; - cc->is_khugepaged = false; - cc->last_target_node =NUMA_NO_NODE ; - *prev = vma;/* TODO: Support file/shmem */
@@ -2415,6 +2409,12 @@ int madvise_collapse(struct vm_area_struct *vma, struct vm_area_struct **prev,if (!hugepage_vma_check (vma, vma->vm_flags, false, false, false))return -EINVAL ; + cc =kmalloc (sizeof (*cc),GFP_KERNEL ); +if (!cc) +return -ENOMEM ; + cc->is_khugepaged = false; + cc->last_target_node =NUMA_NO_NODE ; +mmgrab (mm);lru_add_drain_all ();
Signature · 1 line
2.25.1
Quoted 49 lines · Souptick Joarder
From: "Souptick Joarder (HPE)" <[email protected]>
smatch warnings:
mm/khugepaged.c:2409madvise_collapse()warn: possible memory leak of 'cc'Avoiding possible memory leak.
Reported-by kernel test robot <[email protected]>Reported-by Dan Carpenter <[email protected]>Signed-off-by Souptick Joarder (HPE) <[email protected]>--- mm/khugepaged.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)mm/khugepaged.c +6
-6@@ -2397,12 +2397,6 @@ int madvise_collapse(struct vm_area_struct *vma, struct vm_area_struct **prev,BUG_ON (vma->vm_start > start);BUG_ON (vma->vm_end < end); - cc =kmalloc (sizeof (*cc),GFP_KERNEL ); -if (!cc) -return -ENOMEM ; - cc->is_khugepaged = false; - cc->last_target_node =NUMA_NO_NODE ; - *prev = vma;/* TODO: Support file/shmem */ @@ -2415,6 +2409,12 @@ int madvise_collapse(struct vm_area_struct *vma, struct vm_area_struct **prev,if (!hugepage_vma_check (vma, vma->vm_flags, false, false, false))return -EINVAL ; + cc =kmalloc (sizeof (*cc),GFP_KERNEL ); +if (!cc) +return -ENOMEM ; + cc->is_khugepaged = false; + cc->last_target_node =NUMA_NO_NODE ; +mmgrab (mm);lru_add_drain_all ();Signature · 1 line
2.25.1
Thanks for the fix!
I've also sent out another patch on top which addresses the actual missing kfree()