* [syzbot] [mm?] WARNING in follow_page_pte @ 2025-08-06 7:32 syzbot 2025-08-06 7:55 ` David Hildenbrand ` (2 more replies) 0 siblings, 3 replies; 8+ messages in thread From: syzbot @ 2025-08-06 7:32 UTC (permalink / raw) To: akpm, david, jgg, jhubbard, linux-kernel, linux-mm, peterx, syzkaller-bugs Hello, syzbot found the following issue on: HEAD commit: 7e161a991ea7 Merge tag 'i2c-for-6.17-rc1-part2' of git://g.. git tree: upstream console+strace: https://syzkaller.appspot.com/x/log.txt?x=16d385bc580000 kernel config: https://syzkaller.appspot.com/x/.config?x=75e522434dc68cb9 dashboard link: https://syzkaller.appspot.com/bug?extid=57bcc752f0df8bb1365c compiler: Debian clang version 20.1.7 (++20250616065708+6146a88f6049-1~exp1~20250616065826.132), Debian LLD 20.1.7 syz repro: https://syzkaller.appspot.com/x/repro.syz?x=13fa96a2580000 C reproducer: https://syzkaller.appspot.com/x/repro.c?x=1083c434580000 Downloadable assets: disk image: https://storage.googleapis.com/syzbot-assets/85ce789ac77a/disk-7e161a99.raw.xz vmlinux: https://storage.googleapis.com/syzbot-assets/4d1fd8fed61a/vmlinux-7e161a99.xz kernel image: https://storage.googleapis.com/syzbot-assets/9bd5f709ed6f/bzImage-7e161a99.xz IMPORTANT: if you fix the issue, please add the following tag to the commit: Reported-by: syzbot+57bcc752f0df8bb1365c@syzkaller.appspotmail.com do_initcall_level+0x104/0x190 init/main.c:1331 do_initcalls+0x59/0xa0 init/main.c:1347 kernel_init_freeable+0x334/0x4b0 init/main.c:1579 kernel_init+0x1d/0x1d0 init/main.c:1469 ret_from_fork+0x3f9/0x770 arch/x86/kernel/process.c:148 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245 ------------[ cut here ]------------ WARNING: CPU: 0 PID: 5866 at mm/gup.c:869 follow_page_pte+0xe3c/0x13e0 mm/gup.c:868 Modules linked in: CPU: 0 UID: 0 PID: 5866 Comm: syz-executor302 Not tainted 6.16.0-syzkaller-11699-g7e161a991ea7 #0 PREEMPT(full) Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 07/12/2025 RIP: 0010:follow_page_pte+0xe3c/0x13e0 mm/gup.c:868 Code: ff e8 f8 7a b7 ff 48 ff cb e9 a2 fc ff ff e8 eb 7a b7 ff 4c 89 f7 48 c7 c6 c0 11 96 8b e8 5c cb 1f ff c6 05 75 f7 84 0d 01 90 <0f> 0b 90 e9 0c fd ff ff e8 d7 46 70 09 89 d9 80 e1 07 80 c1 03 38 RSP: 0018:ffffc90003ddf8a0 EFLAGS: 00010246 RAX: 308c9254a9bba300 RBX: 0000000000000000 RCX: 308c9254a9bba300 RDX: 0000000000000004 RSI: ffffffff8dba2d77 RDI: ffff8880322c9e00 RBP: ffffc90003ddf988 R08: 0000000000000003 R09: 0000000000000004 R10: dffffc0000000000 R11: fffffbfff1bfa1ec R12: dffffc0000000000 R13: 0000000000080101 R14: ffffea0001c20240 R15: 0000000070809867 FS: 0000555557f15380(0000) GS:ffff888125c24000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000200000004340 CR3: 0000000072ff4000 CR4: 00000000003526f0 Call Trace: <TASK> follow_pmd_mask mm/gup.c:-1 [inline] follow_pud_mask mm/gup.c:981 [inline] follow_p4d_mask mm/gup.c:998 [inline] follow_page_mask mm/gup.c:1041 [inline] __get_user_pages+0xa8e/0x2ce0 mm/gup.c:1444 __get_user_pages_locked mm/gup.c:1712 [inline] __gup_longterm_locked+0x3dc/0x1660 mm/gup.c:2493 pin_user_pages+0x9e/0xd0 mm/gup.c:3406 xdp_umem_pin_pages+0x117/0x340 net/xdp/xdp_umem.c:105 xdp_umem_reg net/xdp/xdp_umem.c:230 [inline] xdp_umem_create+0x677/0x8e0 net/xdp/xdp_umem.c:263 xsk_setsockopt+0x7b0/0x8d0 net/xdp/xsk.c:1409 do_sock_setsockopt+0x179/0x1b0 net/socket.c:2344 __sys_setsockopt net/socket.c:2369 [inline] __do_sys_setsockopt net/socket.c:2375 [inline] __se_sys_setsockopt net/socket.c:2372 [inline] __x64_sys_setsockopt+0x13f/0x1b0 net/socket.c:2372 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline] do_syscall_64+0xfa/0x3b0 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7f9ea1cc05b9 Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 c1 17 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007ffc94f86308 EFLAGS: 00000206 ORIG_RAX: 0000000000000036 RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f9ea1cc05b9 RDX: 0000000000000004 RSI: 000000000000011b RDI: 0000000000000004 RBP: 00007f9ea1d335f0 R08: 000000000000001c R09: 0000000000000006 R10: 00002000000000c0 R11: 0000000000000206 R12: 0000000000000001 R13: 431bde82d7b634db R14: 0000000000000001 R15: 0000000000000001 </TASK> --- This report is generated by a bot. It may contain errors. See https://goo.gl/tpsmEJ for more information about syzbot. syzbot engineers can be reached at syzkaller@googlegroups.com. syzbot will keep track of this issue. See: https://goo.gl/tpsmEJ#status for how to communicate with syzbot. If the report is already addressed, let syzbot know by replying with: #syz fix: exact-commit-title If you want syzbot to run the reproducer, reply with: #syz test: git://repo/address.git branch-or-commit-hash If you attach or paste a git patch, syzbot will apply it before testing. If you want to overwrite report's subsystems, reply with: #syz set subsystems: new-subsystem (See the list of subsystem names on the web dashboard) If the report is a duplicate of another one, reply with: #syz dup: exact-subject-of-another-report If you want to undo deduplication, reply with: #syz undup ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [syzbot] [mm?] WARNING in follow_page_pte 2025-08-06 7:32 [syzbot] [mm?] WARNING in follow_page_pte syzbot @ 2025-08-06 7:55 ` David Hildenbrand 2025-08-06 8:01 ` David Hildenbrand 2025-08-06 11:19 ` Dev Jain 2025-08-06 11:21 ` syzbot 2 siblings, 1 reply; 8+ messages in thread From: David Hildenbrand @ 2025-08-06 7:55 UTC (permalink / raw) To: syzbot, akpm, jgg, jhubbard, linux-kernel, linux-mm, peterx, syzkaller-bugs On 06.08.25 09:32, syzbot wrote: > Hello, > > syzbot found the following issue on: > > HEAD commit: 7e161a991ea7 Merge tag 'i2c-for-6.17-rc1-part2' of git://g.. > git tree: upstream > console+strace: https://syzkaller.appspot.com/x/log.txt?x=16d385bc580000 > kernel config: https://syzkaller.appspot.com/x/.config?x=75e522434dc68cb9 > dashboard link: https://syzkaller.appspot.com/bug?extid=57bcc752f0df8bb1365c > compiler: Debian clang version 20.1.7 (++20250616065708+6146a88f6049-1~exp1~20250616065826.132), Debian LLD 20.1.7 > syz repro: https://syzkaller.appspot.com/x/repro.syz?x=13fa96a2580000 > C reproducer: https://syzkaller.appspot.com/x/repro.c?x=1083c434580000 > > Downloadable assets: > disk image: https://storage.googleapis.com/syzbot-assets/85ce789ac77a/disk-7e161a99.raw.xz > vmlinux: https://storage.googleapis.com/syzbot-assets/4d1fd8fed61a/vmlinux-7e161a99.xz > kernel image: https://storage.googleapis.com/syzbot-assets/9bd5f709ed6f/bzImage-7e161a99.xz > > IMPORTANT: if you fix the issue, please add the following tag to the commit: > Reported-by: syzbot+57bcc752f0df8bb1365c@syzkaller.appspotmail.com > > do_initcall_level+0x104/0x190 init/main.c:1331 > do_initcalls+0x59/0xa0 init/main.c:1347 > kernel_init_freeable+0x334/0x4b0 init/main.c:1579 > kernel_init+0x1d/0x1d0 init/main.c:1469 > ret_from_fork+0x3f9/0x770 arch/x86/kernel/process.c:148 > ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245 > ------------[ cut here ]------------ > WARNING: CPU: 0 PID: 5866 at mm/gup.c:869 follow_page_pte+0xe3c/0x13e0 mm/gup.c:868 That's the VM_WARN_ON_ONCE_PAGE((flags & FOLL_PIN) && PageAnon(page) && !PageAnonExclusive(page), page); [ 89.134725][ T5866] page: refcount:507 mapcount:1 mapping:0000000000000000 index:0x200000009 pfn:0x70809 [ 89.144633][ T5866] head: order:9 mapcount:505 entire_mapcount:0 nr_pages_mapped:505 pincount:2 [ 89.153655][ T5866] memcg:ffff88801b6f8000 [ 89.157938][ T5866] anon flags: 0xfff6000002007c(referenced|uptodate|dirty|lru|head|swapbacked|node=0|zone=1|lastcpupid=0x7ff) [ 89.170337][ T5866] raw: 00fff00000000000 ffffea0001c20001 dead000000000122 dead000000000400 [ 89.179013][ T5866] raw: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 [ 89.188218][ T5866] head: 00fff6000002007c ffffea0001c52088 ffffea0001cc9988 ffff88807c250551 [ 89.196996][ T5866] head: 0000000200000000 0000000000000000 000001fbffffffff ffff88801b6f8000 [ 89.205866][ T5866] head: 00fff00000010a09 ffffea0001c20001 000001f9000001f8 00000002ffffffff [ 89.214719][ T5866] head: ffffffff000001f8 0000000000000015 0000000000000000 0000000000000200 So it's a pte-mapped THP, whereby the folio is pinned two times. The warning indicates that we likely have !exclusive anon page that is mapped writable into the page table. xdp_umem_pin_pages calls pin_user_pages(FOLL_WRITE | FOLL_LONGTERM). Let me dig, the reproducer seems to involve fork, io_uring, mprotect and setsockopt. -- Cheers, David / dhildenb ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [syzbot] [mm?] WARNING in follow_page_pte 2025-08-06 7:55 ` David Hildenbrand @ 2025-08-06 8:01 ` David Hildenbrand 0 siblings, 0 replies; 8+ messages in thread From: David Hildenbrand @ 2025-08-06 8:01 UTC (permalink / raw) To: syzbot, akpm, jgg, jhubbard, linux-kernel, linux-mm, peterx, syzkaller-bugs Cc: Dev Jain, Lorenzo Stoakes On 06.08.25 09:55, David Hildenbrand wrote: > On 06.08.25 09:32, syzbot wrote: >> Hello, >> >> syzbot found the following issue on: >> >> HEAD commit: 7e161a991ea7 Merge tag 'i2c-for-6.17-rc1-part2' of git://g.. >> git tree: upstream >> console+strace: https://syzkaller.appspot.com/x/log.txt?x=16d385bc580000 >> kernel config: https://syzkaller.appspot.com/x/.config?x=75e522434dc68cb9 >> dashboard link: https://syzkaller.appspot.com/bug?extid=57bcc752f0df8bb1365c >> compiler: Debian clang version 20.1.7 (++20250616065708+6146a88f6049-1~exp1~20250616065826.132), Debian LLD 20.1.7 >> syz repro: https://syzkaller.appspot.com/x/repro.syz?x=13fa96a2580000 >> C reproducer: https://syzkaller.appspot.com/x/repro.c?x=1083c434580000 >> >> Downloadable assets: >> disk image: https://storage.googleapis.com/syzbot-assets/85ce789ac77a/disk-7e161a99.raw.xz >> vmlinux: https://storage.googleapis.com/syzbot-assets/4d1fd8fed61a/vmlinux-7e161a99.xz >> kernel image: https://storage.googleapis.com/syzbot-assets/9bd5f709ed6f/bzImage-7e161a99.xz >> >> IMPORTANT: if you fix the issue, please add the following tag to the commit: >> Reported-by: syzbot+57bcc752f0df8bb1365c@syzkaller.appspotmail.com >> >> do_initcall_level+0x104/0x190 init/main.c:1331 >> do_initcalls+0x59/0xa0 init/main.c:1347 >> kernel_init_freeable+0x334/0x4b0 init/main.c:1579 >> kernel_init+0x1d/0x1d0 init/main.c:1469 >> ret_from_fork+0x3f9/0x770 arch/x86/kernel/process.c:148 >> ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245 >> ------------[ cut here ]------------ >> WARNING: CPU: 0 PID: 5866 at mm/gup.c:869 follow_page_pte+0xe3c/0x13e0 mm/gup.c:868 > > That's the > > VM_WARN_ON_ONCE_PAGE((flags & FOLL_PIN) && PageAnon(page) && > !PageAnonExclusive(page), page); > > [ 89.134725][ T5866] page: refcount:507 mapcount:1 mapping:0000000000000000 index:0x200000009 pfn:0x70809 > [ 89.144633][ T5866] head: order:9 mapcount:505 entire_mapcount:0 nr_pages_mapped:505 pincount:2 > [ 89.153655][ T5866] memcg:ffff88801b6f8000 > [ 89.157938][ T5866] anon flags: 0xfff6000002007c(referenced|uptodate|dirty|lru|head|swapbacked|node=0|zone=1|lastcpupid=0x7ff) > [ 89.170337][ T5866] raw: 00fff00000000000 ffffea0001c20001 dead000000000122 dead000000000400 > [ 89.179013][ T5866] raw: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 > [ 89.188218][ T5866] head: 00fff6000002007c ffffea0001c52088 ffffea0001cc9988 ffff88807c250551 > [ 89.196996][ T5866] head: 0000000200000000 0000000000000000 000001fbffffffff ffff88801b6f8000 > [ 89.205866][ T5866] head: 00fff00000010a09 ffffea0001c20001 000001f9000001f8 00000002ffffffff > [ 89.214719][ T5866] head: ffffffff000001f8 0000000000000015 0000000000000000 0000000000000200 > > So it's a pte-mapped THP, whereby the folio is pinned two times. > > The warning indicates that we likely have !exclusive anon page that is mapped writable > into the page table. > > xdp_umem_pin_pages calls pin_user_pages(FOLL_WRITE | FOLL_LONGTERM). > > Let me dig, the reproducer seems to involve fork, io_uring, mprotect and setsockopt. Just tried on 6.16 and wasn't able to quickly reproduce. I suspect that this is due to commit cac1db8c3aad97d6ffb56ced8868d6cbbbd2bfbe Author: Dev Jain <dev.jain@arm.com> Date: Fri Jul 18 14:32:43 2025 +0530 mm: optimize mprotect() by PTE batching whereby the syscall(__NR_mprotect, /*addr=*/0x200000000000ul, /*len=*/0x800000ul, /*prot=PROT_WRITE|PROT_EXEC*/ 6ul); End sup upgrading write permissions and we somehow end up ignoring the missing PAE bit. -- Cheers, David / dhildenb ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [syzbot] [mm?] WARNING in follow_page_pte 2025-08-06 7:32 [syzbot] [mm?] WARNING in follow_page_pte syzbot 2025-08-06 7:55 ` David Hildenbrand @ 2025-08-06 11:19 ` Dev Jain 2025-08-06 11:23 ` Dev Jain ` (2 more replies) 2025-08-06 11:21 ` syzbot 2 siblings, 3 replies; 8+ messages in thread From: Dev Jain @ 2025-08-06 11:19 UTC (permalink / raw) To: syzbot+57bcc752f0df8bb1365c Cc: akpm, david, jgg, jhubbard, linux-kernel, linux-mm, peterx, syzkaller-bugs, Dev Jain #syz test In commit_anon_folio_batch(), we iterate over all pages pointed to by the PTE batch. Therefore we need to know the first page of the batch; currently we derive that via folio_page(folio, 0), but, that takes us to the first (head) page of the folio instead - our PTE batch may lie in the middle of the folio, leading to incorrectness. Bite the bullet and throw away the micro-optimization of reusing the folio in favour of code simplicity. Derive the page and the folio in change_pte_range, and pass the page too to commit_anon_folio_batch to fix the aforementioned issue. Also, instead of directly adding to the stuct page *page pointer, use the nth_page() macro for safety. Fixes: cac1db8c3aad ("mm: optimize mprotect() by PTE batching") Signed-off-by: Dev Jain <dev.jain@arm.com> --- mm/mprotect.c | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/mm/mprotect.c b/mm/mprotect.c index 78bded7acf79..96cd36ed3489 100644 --- a/mm/mprotect.c +++ b/mm/mprotect.c @@ -120,9 +120,8 @@ static int mprotect_folio_pte_batch(struct folio *folio, pte_t *ptep, static bool prot_numa_skip(struct vm_area_struct *vma, unsigned long addr, pte_t oldpte, pte_t *pte, int target_node, - struct folio **foliop) + struct folio *folio) { - struct folio *folio = NULL; bool ret = true; bool toptier; int nid; @@ -131,7 +130,6 @@ static bool prot_numa_skip(struct vm_area_struct *vma, unsigned long addr, if (pte_protnone(oldpte)) goto skip; - folio = vm_normal_folio(vma, addr, oldpte); if (!folio) goto skip; @@ -173,7 +171,6 @@ static bool prot_numa_skip(struct vm_area_struct *vma, unsigned long addr, folio_xchg_access_time(folio, jiffies_to_msecs(jiffies)); skip: - *foliop = folio; return ret; } @@ -231,16 +228,15 @@ static int page_anon_exclusive_sub_batch(int start_idx, int max_len, * retrieve sub-batches. */ static void commit_anon_folio_batch(struct vm_area_struct *vma, - struct folio *folio, unsigned long addr, pte_t *ptep, + struct folio *folio, struct page *first_page, unsigned long addr, pte_t *ptep, pte_t oldpte, pte_t ptent, int nr_ptes, struct mmu_gather *tlb) { - struct page *first_page = folio_page(folio, 0); bool expected_anon_exclusive; int sub_batch_idx = 0; int len; while (nr_ptes) { - expected_anon_exclusive = PageAnonExclusive(first_page + sub_batch_idx); + expected_anon_exclusive = PageAnonExclusive(nth_page(first_page, sub_batch_idx)); len = page_anon_exclusive_sub_batch(sub_batch_idx, nr_ptes, first_page, expected_anon_exclusive); prot_commit_flush_ptes(vma, addr, ptep, oldpte, ptent, len, @@ -251,7 +247,7 @@ static void commit_anon_folio_batch(struct vm_area_struct *vma, } static void set_write_prot_commit_flush_ptes(struct vm_area_struct *vma, - struct folio *folio, unsigned long addr, pte_t *ptep, + struct folio *folio, struct page *page, unsigned long addr, pte_t *ptep, pte_t oldpte, pte_t ptent, int nr_ptes, struct mmu_gather *tlb) { bool set_write; @@ -270,7 +266,7 @@ static void set_write_prot_commit_flush_ptes(struct vm_area_struct *vma, /* idx = */ 0, set_write, tlb); return; } - commit_anon_folio_batch(vma, folio, addr, ptep, oldpte, ptent, nr_ptes, tlb); + commit_anon_folio_batch(vma, folio, page, addr, ptep, oldpte, ptent, nr_ptes, tlb); } static long change_pte_range(struct mmu_gather *tlb, @@ -305,15 +301,19 @@ static long change_pte_range(struct mmu_gather *tlb, const fpb_t flags = FPB_RESPECT_SOFT_DIRTY | FPB_RESPECT_WRITE; int max_nr_ptes = (end - addr) >> PAGE_SHIFT; struct folio *folio = NULL; + struct page *page; pte_t ptent; + page = vm_normal_page(vma, addr, oldpte); + if (page) + folio = page_folio(page); /* * Avoid trapping faults against the zero or KSM * pages. See similar comment in change_huge_pmd. */ if (prot_numa) { int ret = prot_numa_skip(vma, addr, oldpte, pte, - target_node, &folio); + target_node, folio); if (ret) { /* determine batch to skip */ @@ -323,9 +323,6 @@ static long change_pte_range(struct mmu_gather *tlb, } } - if (!folio) - folio = vm_normal_folio(vma, addr, oldpte); - nr_ptes = mprotect_folio_pte_batch(folio, pte, oldpte, max_nr_ptes, flags); oldpte = modify_prot_start_ptes(vma, addr, pte, nr_ptes); @@ -351,7 +348,7 @@ static long change_pte_range(struct mmu_gather *tlb, */ if ((cp_flags & MM_CP_TRY_CHANGE_WRITABLE) && !pte_write(ptent)) - set_write_prot_commit_flush_ptes(vma, folio, + set_write_prot_commit_flush_ptes(vma, folio, page, addr, pte, oldpte, ptent, nr_ptes, tlb); else prot_commit_flush_ptes(vma, addr, pte, oldpte, ptent, -- 2.30.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [syzbot] [mm?] WARNING in follow_page_pte 2025-08-06 11:19 ` Dev Jain @ 2025-08-06 11:23 ` Dev Jain 2025-08-06 12:21 ` David Hildenbrand 2025-08-06 15:38 ` syzbot 2 siblings, 0 replies; 8+ messages in thread From: Dev Jain @ 2025-08-06 11:23 UTC (permalink / raw) To: syzbot+57bcc752f0df8bb1365c Cc: akpm, david, jgg, jhubbard, linux-kernel, linux-mm, peterx, syzkaller-bugs On 06/08/25 4:49 pm, Dev Jain wrote: > #syz test > > In commit_anon_folio_batch(), we iterate over all pages pointed to by the > PTE batch. Therefore we need to know the first page of the batch; > currently we derive that via folio_page(folio, 0), but, that takes us > to the first (head) page of the folio instead - our PTE batch may lie > in the middle of the folio, leading to incorrectness. > > Bite the bullet and throw away the micro-optimization of reusing the > folio in favour of code simplicity. Derive the page and the folio in > change_pte_range, and pass the page too to commit_anon_folio_batch to > fix the aforementioned issue. > > Also, instead of directly adding to the stuct page *page pointer, use > the nth_page() macro for safety. > > Fixes: cac1db8c3aad ("mm: optimize mprotect() by PTE batching") > Signed-off-by: Dev Jain <dev.jain@arm.com> > --- > mm/mprotect.c | 25 +++++++++++-------------- > 1 file changed, 11 insertions(+), 14 deletions(-) > Oops, this patch is based off mm-hotfixes-unstable, but I guess syzbot will need it rebased on Torvalds' master? ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [syzbot] [mm?] WARNING in follow_page_pte 2025-08-06 11:19 ` Dev Jain 2025-08-06 11:23 ` Dev Jain @ 2025-08-06 12:21 ` David Hildenbrand 2025-08-06 15:38 ` syzbot 2 siblings, 0 replies; 8+ messages in thread From: David Hildenbrand @ 2025-08-06 12:21 UTC (permalink / raw) To: Dev Jain, syzbot+57bcc752f0df8bb1365c Cc: akpm, jgg, jhubbard, linux-kernel, linux-mm, peterx, syzkaller-bugs > static void commit_anon_folio_batch(struct vm_area_struct *vma, > - struct folio *folio, unsigned long addr, pte_t *ptep, > + struct folio *folio, struct page *first_page, unsigned long addr, pte_t *ptep, > pte_t oldpte, pte_t ptent, int nr_ptes, struct mmu_gather *tlb) > { > - struct page *first_page = folio_page(folio, 0); > bool expected_anon_exclusive; > int sub_batch_idx = 0; > int len; > > while (nr_ptes) { > - expected_anon_exclusive = PageAnonExclusive(first_page + sub_batch_idx); > + expected_anon_exclusive = PageAnonExclusive(nth_page(first_page, sub_batch_idx)); We shouldn't need nth_page here, for the same reason we don't use it in rmap code: we're operating within a single page table and hugetlb does not apply. -- Cheers, David / dhildenb ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [syzbot] [mm?] WARNING in follow_page_pte 2025-08-06 11:19 ` Dev Jain 2025-08-06 11:23 ` Dev Jain 2025-08-06 12:21 ` David Hildenbrand @ 2025-08-06 15:38 ` syzbot 2 siblings, 0 replies; 8+ messages in thread From: syzbot @ 2025-08-06 15:38 UTC (permalink / raw) To: akpm, david, dev.jain, jgg, jhubbard, linux-kernel, linux-mm, peterx, syzkaller-bugs Hello, syzbot has tested the proposed patch and the reproducer did not trigger any issue: Reported-by: syzbot+57bcc752f0df8bb1365c@syzkaller.appspotmail.com Tested-by: syzbot+57bcc752f0df8bb1365c@syzkaller.appspotmail.com Tested on: commit: 47905800 Merge tag 'ata-6.17-rc1-fixes' of git://git.k.. git tree: upstream console output: https://syzkaller.appspot.com/x/log.txt?x=125da2f0580000 kernel config: https://syzkaller.appspot.com/x/.config?x=75e522434dc68cb9 dashboard link: https://syzkaller.appspot.com/bug?extid=57bcc752f0df8bb1365c compiler: Debian clang version 20.1.7 (++20250616065708+6146a88f6049-1~exp1~20250616065826.132), Debian LLD 20.1.7 patch: https://syzkaller.appspot.com/x/patch.diff?x=17c36042580000 Note: testing is done by a robot and is best-effort only. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [syzbot] [mm?] WARNING in follow_page_pte 2025-08-06 7:32 [syzbot] [mm?] WARNING in follow_page_pte syzbot 2025-08-06 7:55 ` David Hildenbrand 2025-08-06 11:19 ` Dev Jain @ 2025-08-06 11:21 ` syzbot 2 siblings, 0 replies; 8+ messages in thread From: syzbot @ 2025-08-06 11:21 UTC (permalink / raw) To: akpm, david, dev.jain, jgg, jhubbard, linux-kernel, linux-mm, lorenzo.stoakes, peterx, syzkaller-bugs, ziy syzbot has bisected this issue to: commit cac1db8c3aad97d6ffb56ced8868d6cbbbd2bfbe Author: Dev Jain <dev.jain@arm.com> Date: Fri Jul 18 09:02:43 2025 +0000 mm: optimize mprotect() by PTE batching bisection log: https://syzkaller.appspot.com/x/bisect.txt?x=13c746a2580000 start commit: 7e161a991ea7 Merge tag 'i2c-for-6.17-rc1-part2' of git://g.. git tree: upstream final oops: https://syzkaller.appspot.com/x/report.txt?x=102746a2580000 console output: https://syzkaller.appspot.com/x/log.txt?x=17c746a2580000 kernel config: https://syzkaller.appspot.com/x/.config?x=75e522434dc68cb9 dashboard link: https://syzkaller.appspot.com/bug?extid=57bcc752f0df8bb1365c syz repro: https://syzkaller.appspot.com/x/repro.syz?x=126e85bc580000 C reproducer: https://syzkaller.appspot.com/x/repro.c?x=161a22f0580000 Reported-by: syzbot+57bcc752f0df8bb1365c@syzkaller.appspotmail.com Fixes: cac1db8c3aad ("mm: optimize mprotect() by PTE batching") For information about bisection process see: https://goo.gl/tpsmEJ#bisection ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2025-08-06 15:38 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-08-06 7:32 [syzbot] [mm?] WARNING in follow_page_pte syzbot 2025-08-06 7:55 ` David Hildenbrand 2025-08-06 8:01 ` David Hildenbrand 2025-08-06 11:19 ` Dev Jain 2025-08-06 11:23 ` Dev Jain 2025-08-06 12:21 ` David Hildenbrand 2025-08-06 15:38 ` syzbot 2025-08-06 11:21 ` syzbot
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).