* Greg KH gregkh@linuxfoundation.org [230707 11:55]:
On Thu, Jul 06, 2023 at 02:51:35PM -0400, Liam R. Howlett wrote:
commit 0503ea8f5ba73eb3ab13a81c1eefbaf51405385a upstream.
This was inadvertently fixed during the removal of __vma_adjust().
When __vma_adjust() is adjusting next with a negative value (pushing vma->vm_end lower), there would be two writes to the maple tree. The first write is unnecessary and uses all allocated nodes in the maple state. The second write is necessary but will need to allocate nodes since the first write has used the allocated nodes. This may be a problem as it may not be safe to allocate at this time, such as a low memory situation. Fix the issue by avoiding the first write and only write the adjusted "next" VMA.
Are you sure this is the same git id? The one you reference above is _VERY_ different from your 2 line change below.
And the changelog text is not the same.
Yes, but I am not sure I've indicated what happened correctly.
The bug exists in the older __vma_adjust() function, but I removed __vma_adjust() and inadvertently fixed the bug. So the bug doesn't exist upstream *because* of that commit:
0503ea8f5ba7 ("mm/mmap: remove __vma_adjust()")
My comment after the commit id indicates what happened, but the documentation wasn't clear to me on how to specify what happened.
Does this answer your question?
Thanks, Liam