On Tue, Oct 15, 2024 at 6:12 PM Liam R. Howlett <Liam.Howlett@xxxxxxxxxx> wrote: > Avoiding the zeroing of the vma tree in mmap_region() introduced a race > with truncate in the page table walk. To avoid any races, create a hole > in the rmap during the operation by clearing the pagetable entries > earlier under the mmap write lock and (critically) before the new vma is > installed into the vma tree. The result is that the old vma is still in > the vma tree, but the page tables are cleared while holding the > i_mmap_rwsem. > > This change extends the fix required for hugetblfs and the call_mmap() > function by moving the cleanup higher in the function and running it > unconditionally. > > Cc: Jann Horn <jannh@xxxxxxxxxx> > Cc: Lorenzo Stoakes <lorenzo.stoakes@xxxxxxxxxx> > Cc: Vlastimil Babka <vbabka@xxxxxxx> > Cc: Matthew Wilcox <willy@xxxxxxxxxxxxx> > Cc: David Hildenbrand <david@xxxxxxxxxx> > Fixes: f8d112a4e657 ("mm/mmap: avoid zeroing vma tree in mmap_region()") > Reported-by: Jann Horn <jannh@xxxxxxxxxx> > Closes: https://lore.kernel.org/all/CAG48ez0ZpGzxi=-5O_uGQ0xKXOmbjeQ0LjZsRJ1Qtf2X5eOr1w@xxxxxxxxxxxxxx/ > Link: https://lore.kernel.org/all/CAG48ez0ZpGzxi=-5O_uGQ0xKXOmbjeQ0LjZsRJ1Qtf2X5eOr1w@xxxxxxxxxxxxxx/ > Signed-off-by: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx> Thanks, this looks good to me. Reviewed-by: Jann Horn <jannh@xxxxxxxxxx>