Re: [RFC PATCH 0/6] Convert mount_single-using filesystems to fs_context

From: Richard Weinberger
Date: Thu Mar 21 2019 - 08:48:46 EST


Am Donnerstag, 21. März 2019, 12:50:24 CET schrieb David Howells:
>
> Hi Al,
>
> Here's a set of patches that convert romfs, cramfs, jffs2 and squashfs to
> use the new fs_context struct and replace mount_mtd(). They have
> prerequisite commits (such as replacing mount_bdev()) that can be found in
> the branch detailed below.
>
> (1) Provide a replacement for mount_mtd() that takes an fs_context to
> specify the parameters.
>
> I also put an mtd device pointer into the fs_context struct for use in
> the sget_fc() test and set functions plus a destructor because
> put_fs_context() can't reach into the mtd module.
>
> (2) Convert romfs.
>
> (3) Convert cramfs.
>
> (4) Convert jffs2.
>
> (5) Get rid of the now-obsolete mount_mtd() function.
>
> (6) Convert squashfs.
>
> These can be found in the following branch:
>
> http://git.kernel.org/cgit/linux/kernel/git/dhowells/linux-fs.git/log/?h=mount-api-viro

Hmm, I pulled this into 5.1-rc1 to test jffs2 but it oopes already while booting:

[ 5.999847] BUG: unable to handle kernel NULL pointer dereference at 0000000000000068
[ 6.002273] #PF error: [normal kernel read fault]
[ 6.002912] PGD 0 P4D 0
[ 6.003241] Oops: 0000 [#1] SMP PTI
[ 6.003690] CPU: 3 PID: 1221 Comm: mount Not tainted 5.1.0-rc1+ #372
[ 6.004494] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.11.0-0-g63451fc-prebuilt.qemu-project.org 04/01/2014
[ 6.004504] RIP: 0010:reconfigure_super+0x17/0x1e0
[ 6.004505] Code: 00 01 75 83 48 89 df e8 c7 e5 ff ff e9 76 ff ff ff 66 90 41 56 41 55 41 54 55 53 f7 47 68 ae ff 7f fd 48 8b 47 28 44 8b 77 64 <48> 8b 68 68 0f 85 a2 01 00 00 8b 95 38 02 00 00 85 d2 0f 85 89 01
[ 6.004506] RSP: 0018:ffffb43cc0dafdf0 EFLAGS: 00010246
[ 6.004507] RAX: 0000000000000000 RBX: ffff9d21b925cb00 RCX: ffff9d21b973009c
[ 6.004508] RDX: 0000000000000001 RSI: ffff9d21b925cb00 RDI: ffff9d21b925cb00
[ 6.004508] RBP: ffff9d21b9730000 R08: 0000000000200000 R09: 0000000000000000
[ 6.004509] R10: ffffb43cc0dafe78 R11: 61c8864680b583eb R12: ffff9d21ba0cd000
[ 6.004509] R13: ffffffff8d95a460 R14: 0000000000000000 R15: 0000000000000020
[ 6.004512] FS: 00007fad96cea480(0000) GS:ffff9d21bab80000(0000) knlGS:0000000000000000
[ 6.004514] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 6.004515] CR2: 0000000000000068 CR3: 0000000178dec000 CR4: 00000000000006e0
[ 6.004516] Call Trace:
[ 6.004530] ? debugfs_get_inode+0x50/0x50
[ 6.022494] vfs_get_super+0x9c/0xe0
[ 6.022973] vfs_get_tree+0x38/0xf0
[ 6.023451] do_mount+0x728/0xd20
[ 6.023905] ? _copy_from_user+0x37/0x60
[ 6.024436] ? memdup_user+0x39/0x60
[ 6.024917] ksys_mount+0x7b/0xd0
[ 6.025368] __x64_sys_mount+0x1c/0x20
[ 6.025876] do_syscall_64+0x43/0xf0
[ 6.026375] entry_SYSCALL_64_after_hwframe+0x44/0xa9

Do I miss some other fix?

Thanks,
//richard