[PATCH] mm/madvise: fix very subtle bug
From: Lorenzo Stoakes
Date: Tue Jun 24 2025 - 09:14:19 EST
With thanks to stress-ng --madvise :)
vma may have been updated (in the modify call in madvise_update_vma()), so
we can't assign prev = vma, we must first reassign vma to
madv_behavior->vma to account for this, before setting prev = vma.
---
mm/madvise.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mm/madvise.c b/mm/madvise.c
index 4491bf080f55..c467ee42596f 100644
--- a/mm/madvise.c
+++ b/mm/madvise.c
@@ -1665,8 +1665,8 @@ int madvise_walk_vmas(struct madvise_behavior *madv_behavior)
vma = NULL;
madv_behavior->lock_dropped = false;
} else {
- prev = vma;
vma = madv_behavior->vma;
+ prev = vma;
}
if (vma && range->end < vma->vm_end)
--
2.50.0