From: Liam Howlett <Liam.Howlett@xxxxxxxxxx> The WARN_ON() in vma_iter_store() detected an invalid VMA iterator state. Inspecting the code stack from the report shows that the VMA iterator is never set to the correct start position. Setting the initialization of the VMA iterator to use the address 'start' fixes this issue. Reported-by: syzbot+1d9ec4d1a334ae9e1ca6@xxxxxxxxxxxxxxxxxxxxxxxxx Signed-off-by: Liam Howlett <Liam.Howlett@xxxxxxxxxx> --- Andrew, this can be squashed into the mm-unstable ("madvise: use split_vma() instead of __split_vma()") mm/madvise.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/madvise.c b/mm/madvise.c index 7db6622f8293..ca672e37b38c 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -142,7 +142,7 @@ static int madvise_update_vma(struct vm_area_struct *vma, struct mm_struct *mm = vma->vm_mm; int error; pgoff_t pgoff; - VMA_ITERATOR(vmi, mm, 0); + VMA_ITERATOR(vmi, mm, start); if (new_flags == vma->vm_flags && anon_vma_name_eq(anon_vma_name(vma), anon_name)) { *prev = vma; -- 2.39.0