Re: [syzbot] Re: [syzbot] [kernel?] WARNING in follow_pte
From: syzbot
Date: Wed Jul 03 2024 - 21:58:02 EST
For archival purposes, forwarding an incoming command email to
linux-kernel@xxxxxxxxxxxxxxx.
***
Subject: Re: [syzbot] [kernel?] WARNING in follow_pte
Author: lizhi.xu@xxxxxxxxxxxxx
Fixes: c5541ba378e3 ("mm: follow_pte() improvements")
It introduced mmap_assert_locked(mm) in follow_pte.
This case content does not hold mm lock.
#syz test: upstream 734610514cb0
diff --git a/arch/x86/mm/pat/memtype.c b/arch/x86/mm/pat/memtype.c
index bdc2a240c2aa..0b215d1b89a7 100644
--- a/arch/x86/mm/pat/memtype.c
+++ b/arch/x86/mm/pat/memtype.c
@@ -954,8 +954,12 @@ static int follow_phys(struct vm_area_struct *vma, unsigned long *prot,
pte_t *ptep, pte;
spinlock_t *ptl;
- if (follow_pte(vma, vma->vm_start, &ptep, &ptl))
+ mmap_read_lock(vma->vm_mm);
+ if (follow_pte(vma, vma->vm_start, &ptep, &ptl)) {
+ mmap_read_unlock(vma->vm_mm);
return -EINVAL;
+ }
+ mmap_read_unlock(vma->vm_mm);
pte = ptep_get(ptep);