[PATCH] mm: fix unaccount of memory on vma_link() failure

Anthony Yznaga posted 1 patch 2 years ago
mm/mmap.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
[PATCH] mm: fix unaccount of memory on vma_link() failure
Posted by Anthony Yznaga 2 years ago
Fix insert_vm_struct() so that only accounted memory is unaccounted
if vma_link() fails.

Fixes: d4af56c5c7c6 ("mm: start tracking VMAs with maple tree")
Signed-off-by: Anthony Yznaga <anthony.yznaga@oracle.com>
---
 mm/mmap.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/mm/mmap.c b/mm/mmap.c
index 514ced13c65c..f8c084017757 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -3278,7 +3278,8 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma)
 	}
 
 	if (vma_link(mm, vma)) {
-		vm_unacct_memory(charged);
+		if (vma->vm_flags & VM_ACCOUNT)
+			vm_unacct_memory(charged);
 		return -ENOMEM;
 	}
 
-- 
2.39.3
Re: [PATCH] mm: fix unaccount of memory on vma_link() failure
Posted by Liam R. Howlett 2 years ago
* Anthony Yznaga <anthony.yznaga@oracle.com> [230829 20:43]:
> Fix insert_vm_struct() so that only accounted memory is unaccounted
> if vma_link() fails.
> 
> Fixes: d4af56c5c7c6 ("mm: start tracking VMAs with maple tree")
> Signed-off-by: Anthony Yznaga <anthony.yznaga@oracle.com>

Reviewed-by: Liam R. Howlett <Liam.Howlett@oracle.com>

> ---
>  mm/mmap.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/mm/mmap.c b/mm/mmap.c
> index 514ced13c65c..f8c084017757 100644
> --- a/mm/mmap.c
> +++ b/mm/mmap.c
> @@ -3278,7 +3278,8 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma)
>  	}
>  
>  	if (vma_link(mm, vma)) {
> -		vm_unacct_memory(charged);
> +		if (vma->vm_flags & VM_ACCOUNT)
> +			vm_unacct_memory(charged);
>  		return -ENOMEM;
>  	}
>  
> -- 
> 2.39.3
>