Re: linux-next: Tree for Jul 8 --> bootup failure on s390x (bisected)

From: Al Viro
Date: Mon Jul 08 2019 - 14:07:08 EST


On Mon, Jul 08, 2019 at 06:52:14PM +0200, Christian Borntraeger wrote:

> smp: Brought up 1 node, 1 CPU
> Unable to handle kernel pointer dereference in virtual kernel address space
> Failing address: 000000003a070000 TEID: 000000003a070407
> Fault in home space mode while using kernel ASCE.
> AS:000000003a780007 R3:000000007ffd0007 S:000000007ffd4800 P:000000003a07021d
> Oops: 0004 ilc:2 [#1] SMP
> Modules linked in:
> CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.2.0-rc5-00101-gcb8f0b366109 #14
> Hardware name: IBM 2964 NC9 712 (KVM/Linux)
> Krnl PSW : 0704e00180000000 000000003974b580 (shmem_parse_monolithic+0x88/0x100)
> R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:3 CC:2 PM:0 RI:0 EA:3
> Krnl GPRS: 0000000000000000 000000000000003d 000000003a07040e 000000000000003d
> 000000003a07040f 000000000000006d 0000000000000001 0000000000000000
> 000000007f7c1c00 0000000000000000 000000003a07040a 0000000000000000
> 000000007f7e4000 000000003a190d78 000000003974b56c 000003e00031fd38
> Krnl Code: 000000003974b574: b920002a cgr %r2,%r10
> 000000003974b578: a784001b brc 8,3974b5ae
> #000000003974b57c: 41402001 la %r4,1(%r2)
> >000000003974b580: 92002000 mvi 0(%r2),0
> 000000003974b584: a7090000 lghi %r0,0
> 000000003974b588: b9040014 lgr %r1,%r4
> 000000003974b58c: b25e0001 srst %r0,%r1
> 000000003974b590: a714fffe brc 1,3974b58c
> Call Trace:
> ([<000003e00031fd80>] 0x3e00031fd80)
> [<0000000039811662>] vfs_kern_mount.part.0+0x9a/0xc8
> [<000000003a302fc0>] devtmpfs_init+0x38/0x140
> [<000000003a302e0a>] driver_init+0x22/0x60
> [<000000003a2beff8>] kernel_init_freeable+0x298/0x4f0
> [<0000000039e7b53a>] kernel_init+0x22/0x148
> [<0000000039e87b70>] ret_from_fork+0x30/0x34
> [<0000000039e87b74>] kernel_thread_starter+0x0/0xc
> INFO: lockdep is turned off.
> [...]

Oh, fuck... OK, I understand what's going on; sorry, my fault. Could you
verify that the following helps?

diff --git a/drivers/base/devtmpfs.c b/drivers/base/devtmpfs.c
index 52312c665a38..30d0523014e0 100644
--- a/drivers/base/devtmpfs.c
+++ b/drivers/base/devtmpfs.c
@@ -431,9 +431,10 @@ static int devtmpfsd(void *p)
*/
int __init devtmpfs_init(void)
{
+ char opts[] = "mode=0755";
int err;

- mnt = vfs_kern_mount(&internal_fs_type, 0, "devtmpfs", "mode=0755");
+ mnt = vfs_kern_mount(&internal_fs_type, 0, "devtmpfs", opts);
if (IS_ERR(mnt)) {
printk(KERN_ERR "devtmpfs: unable to create devtmpfs %ld\n",
PTR_ERR(mnt));