Re: upstream boot error: general protection fault in do_mount_root

From: Eric Biggers
Date: Mon Dec 16 2019 - 12:21:19 EST


On Sun, Dec 15, 2019 at 11:55:07PM -0800, syzbot wrote:
> Hello,
>
> syzbot found the following crash on:
>
> HEAD commit: d1eef1c6 Linux 5.5-rc2
> git tree: upstream
> console output: https://syzkaller.appspot.com/x/log.txt?x=11ff2fb1e00000
> kernel config: https://syzkaller.appspot.com/x/.config?x=dcf10bf83926432a
> dashboard link: https://syzkaller.appspot.com/bug?extid=958915844b296815c246
> compiler: gcc (GCC) 9.0.0 20181231 (experimental)
>
> Unfortunately, I don't have any reproducer for this crash yet.
>
> IMPORTANT: if you fix the bug, please add the following tag to the commit:
> Reported-by: syzbot+958915844b296815c246@xxxxxxxxxxxxxxxxxxxxxxxxx
>
> IPI shorthand broadcast: enabled
> AVX2 version of gcm_enc/dec engaged.
> AES CTR mode by8 optimization enabled
> registered taskstats version 1
> Loading compiled-in X.509 certificates
> Loaded X.509 cert 'Build time autogenerated kernel key:
> 2a1122198a3e68692ac5775a16203e4f5f9d30c2'
> zswap: loaded using pool lzo/zbud
> Key type ._fscrypt registered
> Key type .fscrypt registered
> Btrfs loaded, crc32c=crc32c-intel
> Key type big_key registered
> Key type encrypted registered
> ima: No TPM chip found, activating TPM-bypass!
> ima: Allocated hash algorithm: sha256
> ima: No architecture policies found
> evm: Initialising EVM extended attributes:
> evm: security.selinux
> evm: security.SMACK64
> evm: security.SMACK64EXEC
> evm: security.SMACK64TRANSMUTE
> evm: security.SMACK64MMAP
> evm: security.apparmor
> evm: security.ima
> evm: security.capability
> evm: HMAC attrs: 0x1
> PM: Magic number: 15:612:306
> usb usb38: hash matches
> tty tty35: hash matches
> printk: console [netcon0] enabled
> netconsole: network logging started
> gtp: GTP module loaded (pdp ctx size 104 bytes)
> rdma_rxe: loaded
> cfg80211: Loading compiled-in X.509 certificates for regulatory database
> cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
> Unstable clock detected, switching default tracing clock to "global"
> If you want to keep using the local clock, then add:
> "trace_clock=local"
> on the kernel command line
> ALSA device list:
> #0: Dummy 1
> #1: Loopback 1
> #2: Virtual MIDI Card 1
> #3: HDA Intel at 0xfebf0000 irq 31
> md: Waiting for all devices to be available before autodetect
> md: If you don't use raid, use raid=noautodetect
> md: Autodetecting RAID arrays.
> md: autorun ...
> md: ... autorun DONE.
> kasan: CONFIG_KASAN_INLINE enabled
> kasan: GPF could be caused by NULL-ptr deref or user memory access
> general protection fault: 0000 [#1] PREEMPT SMP KASAN
> CPU: 3 PID: 1 Comm: swapper/0 Not tainted 5.5.0-rc2-syzkaller #0
> Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS
> rel-1.12.0-59-gc9ba5276e321-prebuilt.qemu.org 04/01/2014
> RIP: 0010:strncpy+0x35/0xc0 lib/string.c:119
> Code: e5 41 56 41 55 4c 8d 34 17 49 bd 00 00 00 00 00 fc ff df 41 54 53 48
> 89 fb 48 83 ec 10 48 89 f2 48 89 f1 48 c1 ea 03 83 e1 07 <42> 0f b6 14 2a 38
> ca 7f 04 84 d2 75 40 48 89 da 48 89 d9 44 0f b6
> RSP: 0000:ffffc9000034fca8 EFLAGS: 00010246
> RAX: ffff88807331f000 RBX: ffff88807331f000 RCX: 0000000000000000
> RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff88807331f000
> RBP: ffffc9000034fcd8 R08: ffff88807331f000 R09: ffffed1005a6703d
> R10: ffffed1005a6703c R11: ffff88802d3381e3 R12: ffffea0001ccc7c0
> R13: dffffc0000000000 R14: ffff88807331ffff R15: ffff88801f1cb000
> FS: 0000000000000000(0000) GS:ffff88802d300000(0000) knlGS:0000000000000000
> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: 0000000000000000 CR3: 000000000986d000 CR4: 0000000000340ee0
> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
> Call Trace:
> strncpy include/linux/string.h:281 [inline]
> do_mount_root+0x74/0x23b init/do_mounts.c:404
> mount_block_root+0x342/0x51a init/do_mounts.c:438
> mount_root+0x283/0x2cd init/do_mounts.c:628
> prepare_namespace+0x26f/0x2a7 init/do_mounts.c:687
> kernel_init_freeable+0x557/0x570 init/main.c:1231
> kernel_init+0x12/0x1bf init/main.c:1110
> ret_from_fork+0x24/0x30 arch/x86/entry/entry_64.S:352
> Modules linked in:
> ---[ end trace dc1d12e4189687e7 ]---
> RIP: 0010:strncpy+0x35/0xc0 lib/string.c:119
> Code: e5 41 56 41 55 4c 8d 34 17 49 bd 00 00 00 00 00 fc ff df 41 54 53 48
> 89 fb 48 83 ec 10 48 89 f2 48 89 f1 48 c1 ea 03 83 e1 07 <42> 0f b6 14 2a 38
> ca 7f 04 84 d2 75 40 48 89 da 48 89 d9 44 0f b6
> RSP: 0000:ffffc9000034fca8 EFLAGS: 00010246
> RAX: ffff88807331f000 RBX: ffff88807331f000 RCX: 0000000000000000
> RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff88807331f000
> RBP: ffffc9000034fcd8 R08: ffff88807331f000 R09: ffffed1005a6703d
> R10: ffffed1005a6703c R11: ffff88802d3381e3 R12: ffffea0001ccc7c0
> R13: dffffc0000000000 R14: ffff88807331ffff R15: ffff88801f1cb000
> FS: 0000000000000000(0000) GS:ffff88802d300000(0000) knlGS:0000000000000000
> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: 0000000000000000 CR3: 000000000986d000 CR4: 0000000000340ee0
> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
>
>

Fixed in mainline by commit 7de7de7ca0ae0

#syz fix: Fix root mounting with no mount options

- Eric