]> www.infradead.org Git - users/dwmw2/linux.git/commit
mm/mmap: Fix error path in do_vmi_align_munmap()
authorLiam R. Howlett <Liam.Howlett@oracle.com>
Sun, 18 Jun 2023 00:47:08 +0000 (20:47 -0400)
committerDavid Woodhouse <dwmw@amazon.co.uk>
Wed, 28 Jun 2023 13:37:09 +0000 (14:37 +0100)
commiteb2fcec387b998d8cb7c8de15c2b03f0c20d643a
treedc1826369874972db43c62ed9e2849d84eeee215
parente84a4e368abe42cf359fe237f0238820859d5044
mm/mmap: Fix error path in do_vmi_align_munmap()

commit 606c812eb1d5b5fb0dd9e330ca94b52d7c227830 upstream

The error unrolling was leaving the VMAs detached in many cases and
leaving the locked_vm statistic altered, and skipping the unrolling
entirely in the case of the vma tree write failing.

Fix the error path by re-attaching the detached VMAs and adding the
necessary goto for the failed vma tree write, and fix the locked_vm
statistic by only updating after the vma tree write succeeds.

Fixes: 763ecb035029 ("mm: remove the vma linked list")
Reported-by: Vegard Nossum <vegard.nossum@oracle.com>
Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
[ dwmw2: Strictly, the original patch wasn't *re-attaching* the
         detached VMAs. They *were* still attached but just had
         the 'detached' flag set, which is an optimisation. Which
         doesn't exist in 6.3, so drop that. Also drop the call
         to vma_start_write() which came in with the per-VMA
         locking in 6.4. ]
[ dwmw2 (6.1): It's do_mas_align_munmap() here. And has two call
         sites for the now-removed munmap_sidetree() function.
         Inline them both rather then trying to backport various
         dependencies with potentially subtle interactions. ]
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
mm/mmap.c