On Sat, 25 Feb 2023 19:53:04 -0800 Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote: > On Sat, Feb 25, 2023 at 7:27 PM Linus Torvalds > <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote: > > > > Will bisect further, but adding Liam to the participants because it's > > now narrowed down to his changes. > > Ok, it's commit 2286a6914c77 ("mm: change mprotect_fixup to vma iterator") Liam sent us a fix yesterday, hopefully this? From: "Liam R. Howlett" <Liam.Howlett@xxxxxxxxxx> Subject: mm/mprotect: Fix successful vma_merge() of next in do_mprotect_pkey() Date: Fri, 24 Feb 2023 16:20:55 -0500 If mprotect_fixup() successfully calls vma_merge() and replaces vma and the next vma, then the tmp variable in the do_mprotect_pkey() is not updated to point to the new vma end. This results in the loop detecting a gap between VMAs that does not exist. Fix the faulty value of tmp by setting it to the end location of the vma iterator at the end of the loop. Link: https://lkml.kernel.org/r/20230224212055.1786100-1-Liam.Howlett@xxxxxxxxxx Fixes: 2286a6914c77 ("mm: change mprotect_fixup to vma iterator") Link: https://lore.kernel.org/linux-mm/20230223120407.729110a6ecd1416ac59d9cb0@xxxxxxxxxxxxxxxxxxxx/ Signed-off-by: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx> Reported-by: Bert Karwatzki <spasswolf@xxxxxx> Link: https://bugzilla.kernel.org/show_bug.cgi?id=217061 Tested-by: Bert Karwatzki <spasswolf@xxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- --- a/mm/mprotect.c~mm-mprotect-fix-successful-vma_merge-of-next-in-do_mprotect_pkey +++ b/mm/mprotect.c @@ -832,6 +832,7 @@ static int do_mprotect_pkey(unsigned long start, size_t len, if (error) break; + tmp = vma_iter_end(&vmi); nstart = tmp; prot = reqprot; } _