Hi On 25.11.2020 03:32, Matthew Wilcox wrote: > On Tue, Nov 17, 2020 at 11:43:02PM +0000, Matthew Wilcox wrote: >> On Tue, Nov 17, 2020 at 07:15:13PM +0000, Matthew Wilcox wrote: >>> I find both of these functions exceptionally confusing. Does this >>> make it easier to understand? >> Never mind, this is buggy. I'll send something better tomorrow. > That took a week, not a day. *sigh*. At least this is shorter. > > commit 1a02863ce04fd325922d6c3db6d01e18d55f966b > Author: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx> > Date: Tue Nov 17 10:45:18 2020 -0500 > > fix mm-truncateshmem-handle-truncates-that-split-thps.patch This patch landed in todays linux-next (20201203) as commit 8678b27f4b8b ("8678b27f4b8bfc130a13eb9e9f27171bcd8c0b3b"). Sadly it breaks booting of ANY of my ARM 32bit test systems, which use initrd. ARM64bit based systems boot fine. Here is example of the crash: Waiting 2 sec before mounting root device... RAMDISK: squashfs filesystem found at block 0 RAMDISK: Loading 37861KiB [1 disk] into ram disk... / / / / done. using deprecated initrd support, will be removed in 2021. ------------[ cut here ]------------ kernel BUG at fs/inode.c:531! Internal error: Oops - BUG: 0 [#1] PREEMPT SMP ARM Modules linked in: CPU: 0 PID: 12 Comm: kworker/0:1 Not tainted 5.10.0-rc6-next-20201203 #2131 Hardware name: Samsung Exynos (Flattened Device Tree) Workqueue: events delayed_fput PC is at clear_inode+0x74/0x88 LR is at clear_inode+0x14/0x88 pc : [<c02fb334>] lr : [<c02fb2d4>] psr: 200001d3 sp : c1d2be68 ip : c1736ff4 fp : c1208f14 r10: c1208ec8 r9 : c20020c0 r8 : c209b0d8 r7 : c02f759c r6 : c0c13940 r5 : c209b244 r4 : c209b0d8 r3 : 000024f9 r2 : 00000000 r1 : 00000000 r0 : c209b244 Flags: nzCv IRQs off FIQs off Mode SVC_32 ISA ARM Segment none Control: 10c5387d Table: 4000404a DAC: 00000051 Process kworker/0:1 (pid: 12, stack limit = 0x(ptrval)) Stack: (0xc1d2be68 to 0xc1d2c000) ... [<c02fb334>] (clear_inode) from [<c02fc8a0>] (evict+0x12c/0x13c) [<c02fc8a0>] (evict) from [<c02f648c>] (__dentry_kill+0xb0/0x188) [<c02f648c>] (__dentry_kill) from [<c02f7714>] (dput+0x2d8/0x67c) [<c02f7714>] (dput) from [<c02dd300>] (__fput+0xd4/0x24c) [<c02dd300>] (__fput) from [<c02dd4b4>] (delayed_fput+0x3c/0x48) [<c02dd4b4>] (delayed_fput) from [<c0149660>] (process_one_work+0x234/0x7e4) [<c0149660>] (process_one_work) from [<c0149c54>] (worker_thread+0x44/0x51c) [<c0149c54>] (worker_thread) from [<c0150a88>] (kthread+0x158/0x1a0) [<c0150a88>] (kthread) from [<c010011c>] (ret_from_fork+0x14/0x38) Exception stack(0xc1d2bfb0 to 0xc1d2bff8) ... ---[ end trace b3c68905048e7f9b ]--- note: kworker/0:1[12] exited with preempt_count 1 BUG: sleeping function called from invalid context at ./include/linux/percpu-rwsem.h:49 in_atomic(): 0, irqs_disabled(): 128, non_block: 0, pid: 12, name: kworker/0:1 INFO: lockdep is turned off. irq event stamp: 7498 hardirqs last enabled at (7497): [<c02b7fcc>] free_unref_page+0x80/0x88 hardirqs last disabled at (7498): [<c0b40b18>] _raw_spin_lock_irq+0x24/0x5c softirqs last enabled at (6234): [<c0966af4>] linkwatch_do_dev+0x20/0x80 softirqs last disabled at (6232): [<c0966a60>] rfc2863_policy+0x30/0xa4 CPU: 0 PID: 12 Comm: kworker/0:1 Tainted: G D 5.10.0-rc6-next-20201203 #2131 Hardware name: Samsung Exynos (Flattened Device Tree) Workqueue: events delayed_fput [<c0111718>] (unwind_backtrace) from [<c010d050>] (show_stack+0x10/0x14) [<c010d050>] (show_stack) from [<c0b34310>] (dump_stack+0xb4/0xd4) [<c0b34310>] (dump_stack) from [<c015a9d4>] (___might_sleep+0x288/0x2d8) [<c015a9d4>] (___might_sleep) from [<c013c744>] (exit_signals+0x38/0x428) [<c013c744>] (exit_signals) from [<c012ce18>] (do_exit+0xe4/0xc88) [<c012ce18>] (do_exit) from [<c010d28c>] (die+0x238/0x30c) [<c010d28c>] (die) from [<c010d560>] (do_undefinstr+0xbc/0x26c) [<c010d560>] (do_undefinstr) from [<c0100c1c>] (__und_svc_finish+0x0/0x44) Exception stack(0xc1d2be18 to 0xc1d2be60) VFS: Mounted root (squashfs filesystem) readonly on device 1:0. be00: c209b244 00000000 be20: 00000000 000024f9 c209b0d8 c209b244 c0c13940 c02f759c c209b0d8 c20020c0 be40: c1208ec8 c1208f14 c1736ff4 c1d2be68 c02fb2d4 c02fb334 200001d3 ffffffff [<c0100c1c>] (__und_svc_finish) from [<c02fb334>] (clear_inode+0x74/0x88) [<c02fb334>] (clear_inode) from [<c02fc8a0>] (evict+0x12c/0x13c) [<c02fc8a0>] (evict) from [<c02f648c>] (__dentry_kill+0xb0/0x188) [<c02f648c>] (__dentry_kill) from [<c02f7714>] (dput+0x2d8/0x67c) [<c02f7714>] (dput) from [<c02dd300>] (__fput+0xd4/0x24c) [<c02dd300>] (__fput) from [<c02dd4b4>] (delayed_fput+0x3c/0x48) [<c02dd4b4>] (delayed_fput) from [<c0149660>] (process_one_work+0x234/0x7e4) [<c0149660>] (process_one_work) from [<c0149c54>] (worker_thread+0x44/0x51c) [<c0149c54>] (worker_thread) from [<c0150a88>] (kthread+0x158/0x1a0) [<c0150a88>] (kthread) from [<c010011c>] (ret_from_fork+0x14/0x38) Exception stack(0xc1d2bfb0 to 0xc1d2bff8) bfa0: 00000000 00000000 00000000 00000000 bfc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 bfe0: 00000000 00000000 00000000 00000000 00000013 00000000 EXT4-fs (mmcblk0p6): INFO: recovery required on readonly filesystem EXT4-fs (mmcblk0p6): write access will be enabled during recovery EXT4-fs (mmcblk0p6): recovery complete EXT4-fs (mmcblk0p6): mounted filesystem with ordered data mode. Opts: (null) VFS: Mounted root (ext4 filesystem) readonly on device 179:6. Trying to move old root to /initrd ... I suppose this issue can be also reproduced with qemu. Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland