From: Yu Zhao <yuzhao@google.com>
To: syzbot <syzbot+03fd9b3f71641f0ebf2d@syzkaller.appspotmail.com>
Cc: akpm@linux-foundation.org, axboe@kernel.dk,
io-uring@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-mm@kvack.org, syzkaller-bugs@googlegroups.com
Subject: Re: [syzbot] [mm] WARNING in get_pte_pfn
Date: Fri, 22 Dec 2023 20:30:50 -0700 [thread overview]
Message-ID: <ZYZUarJep8b746Et@google.com> (raw)
In-Reply-To: <000000000000f9ff00060d14c256@google.com>
On Fri, Dec 22, 2023 at 12:11:21AM -0800, syzbot wrote:
> Hello,
>
> syzbot found the following issue on:
>
> HEAD commit: 0e389834672c Merge tag 'for-6.7-rc5-tag' of git://git.kern..
> git tree: upstream
> console output: https://syzkaller.appspot.com/x/log.txt?x=1454824ee80000
> kernel config: https://syzkaller.appspot.com/x/.config?x=f21aff374937e60e
> dashboard link: https://syzkaller.appspot.com/bug?extid=03fd9b3f71641f0ebf2d
> compiler: gcc (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40
> syz repro: https://syzkaller.appspot.com/x/repro.syz?x=13b4ef49e80000
> C reproducer: https://syzkaller.appspot.com/x/repro.c?x=118314d6e80000
>
> Downloadable assets:
> disk image: https://storage.googleapis.com/syzbot-assets/e58cd74e152a/disk-0e389834.raw.xz
> vmlinux: https://storage.googleapis.com/syzbot-assets/45d17ccb34bc/vmlinux-0e389834.xz
> kernel image: https://storage.googleapis.com/syzbot-assets/b9b7105d4e08/bzImage-0e389834.xz
>
> IMPORTANT: if you fix the issue, please add the following tag to the commit:
> Reported-by: syzbot+03fd9b3f71641f0ebf2d@syzkaller.appspotmail.com
>
> ------------[ cut here ]------------
> WARNING: CPU: 1 PID: 5066 at mm/vmscan.c:3242 get_pte_pfn+0x1b5/0x3f0 mm/vmscan.c:3242
> Modules linked in:
> CPU: 1 PID: 5066 Comm: syz-executor668 Not tainted 6.7.0-rc5-syzkaller-00270-g0e389834672c #0
> Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 11/17/2023
> RIP: 0010:get_pte_pfn+0x1b5/0x3f0 mm/vmscan.c:3242
> Code: f3 74 2a e8 6d 78 cb ff 31 ff 48 b8 00 00 00 00 00 00 00 02 48 21 c5 48 89 ee e8 e6 73 cb ff 48 85 ed 74 4e e8 4c 78 cb ff 90 <0f> 0b 90 48 c7 c3 ff ff ff ff e8 3c 78 cb ff 48 b8 00 00 00 00 00
> RSP: 0018:ffffc900041e6878 EFLAGS: 00010293
> RAX: 0000000000000000 RBX: 000000000007891d RCX: ffffffff81bbf6e3
> RDX: ffff88807d813b80 RSI: ffffffff81bbf684 RDI: 0000000000000005
> RBP: 0000000000000000 R08: 0000000000000005 R09: 0000000000000000
> R10: 0000000000000200 R11: 0000000000000003 R12: 0000000000000200
> R13: 1ffff9200083cd0f R14: 0000000000010b21 R15: 0000000020ffc000
> FS: 0000555555f4d480(0000) GS:ffff8880b9900000(0000) knlGS:0000000000000000
> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: 0000000000000000 CR3: 000000005fbfa000 CR4: 0000000000350ef0
> Call Trace:
> <TASK>
> lru_gen_look_around+0x70d/0x11a0 mm/vmscan.c:4001
> folio_referenced_one+0x5a2/0xf70 mm/rmap.c:843
> rmap_walk_anon+0x225/0x570 mm/rmap.c:2485
> rmap_walk mm/rmap.c:2562 [inline]
> rmap_walk mm/rmap.c:2557 [inline]
> folio_referenced+0x28a/0x4b0 mm/rmap.c:960
> folio_check_references mm/vmscan.c:829 [inline]
> shrink_folio_list+0x1ace/0x3f00 mm/vmscan.c:1160
> evict_folios+0x6e7/0x1b90 mm/vmscan.c:4499
> try_to_shrink_lruvec+0x638/0xa10 mm/vmscan.c:4704
> lru_gen_shrink_lruvec mm/vmscan.c:4849 [inline]
> shrink_lruvec+0x314/0x2990 mm/vmscan.c:5622
> shrink_node_memcgs mm/vmscan.c:5842 [inline]
> shrink_node+0x811/0x3710 mm/vmscan.c:5877
> shrink_zones mm/vmscan.c:6116 [inline]
> do_try_to_free_pages+0x36c/0x1940 mm/vmscan.c:6178
#syz test
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 9dd8977de5a2..041f9ad8f95b 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -3230,7 +3230,8 @@ static bool get_next_vma(unsigned long mask, unsigned long size, struct mm_walk
return false;
}
-static unsigned long get_pte_pfn(pte_t pte, struct vm_area_struct *vma, unsigned long addr)
+static unsigned long get_pte_pfn(pte_t pte, struct vm_area_struct *vma, unsigned long addr,
+ struct page *page)
{
unsigned long pfn = pte_pfn(pte);
@@ -3239,8 +3240,14 @@ static unsigned long get_pte_pfn(pte_t pte, struct vm_area_struct *vma, unsigned
if (!pte_present(pte) || is_zero_pfn(pfn))
return -1;
- if (WARN_ON_ONCE(pte_devmap(pte) || pte_special(pte)))
+ if (pte_devmap(pte) || pte_special(pte)) {
+ if (page)
+ dump_page(page, "get_pte_pfn()");
+ dump_vma(vma);
+ dump_mm(vma->vm_mm);
+ BUG();
return -1;
+ }
if (WARN_ON_ONCE(!pfn_valid(pfn)))
return -1;
@@ -3331,7 +3338,7 @@ static bool walk_pte_range(pmd_t *pmd, unsigned long start, unsigned long end,
total++;
walk->mm_stats[MM_LEAF_TOTAL]++;
- pfn = get_pte_pfn(ptent, args->vma, addr);
+ pfn = get_pte_pfn(ptent, args->vma, addr, NULL);
if (pfn == -1)
continue;
@@ -3998,7 +4005,7 @@ void lru_gen_look_around(struct page_vma_mapped_walk *pvmw)
unsigned long pfn;
pte_t ptent = ptep_get(pte + i);
- pfn = get_pte_pfn(ptent, pvmw->vma, addr);
+ pfn = get_pte_pfn(ptent, pvmw->vma, addr, pfn_to_page(pvmw->pfn));
if (pfn == -1)
continue;
next prev parent reply other threads:[~2023-12-23 3:30 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-22 8:11 [syzbot] [mm?] [io-uring?] WARNING in get_pte_pfn syzbot
2023-12-22 14:55 ` Jens Axboe
2023-12-23 4:59 ` Yu Zhao
2023-12-23 3:30 ` Yu Zhao [this message]
2023-12-23 4:02 ` syzbot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZYZUarJep8b746Et@google.com \
--to=yuzhao@google.com \
--cc=akpm@linux-foundation.org \
--cc=axboe@kernel.dk \
--cc=io-uring@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=syzbot+03fd9b3f71641f0ebf2d@syzkaller.appspotmail.com \
--cc=syzkaller-bugs@googlegroups.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.