From: Kees Cook <keescook@chromium.org>
To: Ira Weiny <ira.weiny@intel.com>
Cc: "Fabio M. De Francesco" <fmdefrancesco@gmail.com>,
ebiederm@xmission.com, linux-fsdevel@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
linux-next@vger.kernel.org, sfr@canb.auug.org.au,
syzkaller-bugs@googlegroups.com, viro@zeniv.linux.org.uk,
syzbot <syzbot+3250d9c8925ef29e975f@syzkaller.appspotmail.com>
Subject: Re: [syzbot] linux-next boot error: BUG: unable to handle kernel paging request in kernel_execve
Date: Thu, 11 Aug 2022 14:00:59 -0700 [thread overview]
Message-ID: <202208111356.97951D32@keescook> (raw)
In-Reply-To: <YvVPtuel8NMmiTKk@iweiny-desk3>
On Thu, Aug 11, 2022 at 11:51:34AM -0700, Ira Weiny wrote:
> On Thu, Aug 11, 2022 at 10:39:29AM -0700, Ira wrote:
> > On Thu, Aug 11, 2022 at 08:33:16AM -0700, Kees Cook wrote:
> > > Hi Fabio,
> > >
> > > It seems likely that the kmap change[1] might be causing this crash. Is
> > > there a boot-time setup race between kmap being available and early umh
> > > usage?
> >
> > I don't see how this is a setup problem with the config reported here.
> >
> > CONFIG_64BIT=y
> >
> > ...and HIGHMEM is not set.
> > ...and PREEMPT_RT is not set.
> >
> > So the kmap_local_page() call in that stack should be a page_address() only.
> >
> > I think the issue must be some sort of race which was being prevented because
> > of the preemption and/or pagefault disable built into kmap_atomic().
> >
> > Is this reproducable?
> >
> > The hunk below will surely fix it but I think the pagefault_disable() is
> > the only thing that is required. It would be nice to test it.
>
> Fabio and I discussed this. And he also mentioned that pagefault_disable() is
> all that is required.
Okay, sounds good.
> Do we have a way to test this?
It doesn't look like syzbot has a reproducer yet, so its patch testing
system[1] will not work. But if you can send me a patch, I could land it
in -next and we could see if the reproduction frequency drops to zero.
(Looking at the dashboard, it's seen 2 crashes, most recently 8 hours
ago.)
-Kees
[1] https://github.com/google/syzkaller/blob/master/docs/syzbot.md#testing-patches
> > > > syzbot found the following issue on:
> > > >
> > > > HEAD commit: bc6c6584ffb2 Add linux-next specific files for 20220810
> > > > git tree: linux-next
> > > > console output: https://syzkaller.appspot.com/x/log.txt?x=115034c3080000
> > > > kernel config: https://syzkaller.appspot.com/x/.config?x=5784be4315a4403b
> > > > dashboard link: https://syzkaller.appspot.com/bug?extid=3250d9c8925ef29e975f
> > > > compiler: gcc (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2
> > > >
> > > > IMPORTANT: if you fix the issue, please add the following tag to the commit:
> > > > Reported-by: syzbot+3250d9c8925ef29e975f@syzkaller.appspotmail.com
> > > >
> > > > BUG: unable to handle page fault for address: ffffdc0000000000
> > > > #PF: supervisor read access in kernel mode
> > > > #PF: error_code(0x0000) - not-present page
> > > > PGD 11826067 P4D 11826067 PUD 0
> > > > Oops: 0000 [#1] PREEMPT SMP KASAN
> > > > CPU: 0 PID: 1100 Comm: kworker/u4:5 Not tainted 5.19.0-next-20220810-syzkaller #0
> > > > Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 07/22/2022
> > > > RIP: 0010:strnlen+0x3b/0x70 lib/string.c:504
> > > > Code: 74 3c 48 bb 00 00 00 00 00 fc ff df 49 89 fc 48 89 f8 eb 09 48 83 c0 01 48 39 e8 74 1e 48 89 c2 48 89 c1 48 c1 ea 03 83 e1 07 <0f> b6 14 1a 38 ca 7f 04 84 d2 75 11 80 38 00 75 d9 4c 29 e0 48 83
> > > > RSP: 0000:ffffc90005c5fe10 EFLAGS: 00010246
> > > > RAX: ffff000000000000 RBX: dffffc0000000000 RCX: 0000000000000000
> > > > RDX: 1fffe00000000000 RSI: 0000000000020000 RDI: ffff000000000000
> > > > RBP: ffff000000020000 R08: 0000000000000005 R09: 0000000000000000
> > > > R10: 0000000000000006 R11: 0000000000000000 R12: ffff000000000000
> > > > R13: ffff88814764cc00 R14: ffff000000000000 R15: ffff88814764cc00
> > > > FS: 0000000000000000(0000) GS:ffff8880b9a00000(0000) knlGS:0000000000000000
> > > > CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> > > > CR2: ffffdc0000000000 CR3: 000000000bc8e000 CR4: 00000000003506f0
> > > > DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> > > > DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
> > > > Call Trace:
> > > > <TASK>
> > > > strnlen include/linux/fortify-string.h:119 [inline]
> > > > copy_string_kernel+0x26/0x250 fs/exec.c:616
> > > > copy_strings_kernel+0xb3/0x190 fs/exec.c:655
> > > > kernel_execve+0x377/0x500 fs/exec.c:1998
> > > > call_usermodehelper_exec_async+0x2e3/0x580 kernel/umh.c:112
> > > > ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:306
> > > > </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.
--
Kees Cook
next prev parent reply other threads:[~2022-08-11 21:01 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-11 7:29 [syzbot] linux-next boot error: BUG: unable to handle kernel paging request in kernel_execve syzbot
2022-08-11 15:33 ` Kees Cook
2022-08-11 17:39 ` Ira Weiny
2022-08-11 18:51 ` Ira Weiny
2022-08-11 21:00 ` Kees Cook [this message]
2022-08-12 0:11 ` Ira Weiny
2022-08-12 9:29 ` Dmitry Vyukov
2022-08-12 18:44 ` Kees Cook
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=202208111356.97951D32@keescook \
--to=keescook@chromium.org \
--cc=ebiederm@xmission.com \
--cc=fmdefrancesco@gmail.com \
--cc=ira.weiny@intel.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-next@vger.kernel.org \
--cc=sfr@canb.auug.org.au \
--cc=syzbot+3250d9c8925ef29e975f@syzkaller.appspotmail.com \
--cc=syzkaller-bugs@googlegroups.com \
--cc=viro@zeniv.linux.org.uk \
/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.