Messages in this thread | | | From | Guenter Roeck <> | Subject | linux-next: tracebacks in workqueue.c/__flush_work() | Date | Sat, 2 Feb 2019 14:20:23 -0800 |
| |
Commit "workqueue: Try to catch flush_work() without INIT_WORK()" added a warning if flush_work() is called without worker function.
This results in the following tracebacks, typically observed during system shutdown.
------------[ cut here ]------------ WARNING: CPU: 0 PID: 101 at kernel/workqueue.c:3018 __flush_work+0x2a4/0x2e0 Modules linked in: CPU: 0 PID: 101 Comm: umount Not tainted 5.0.0-rc4-next-20190201 #1 fffffc0007dcbd18 0000000000000000 fffffc00003338a0 fffffc00003517d4 fffffc00003517d4 fffffc0000e56c98 fffffc0000e56c98 fffffc0000ebc1d8 fffffc0000ec0bd8 ffffffffa8024010 0000000000000bca 0000000000000000 fffffc00003d3ea4 fffffc0000e56c98 fffffc0000e56c60 fffffc0000ebc1d8 fffffc0000ec0bd8 0000000000000000 0000000000000001 0000000000000000 fffffc000782d520 0000000000000000 fffffc000044ef50 fffffc0007c4b540 Trace: [<fffffc00003338a0>] __warn+0x160/0x190 [<fffffc00003517d4>] __flush_work+0x2a4/0x2e0 [<fffffc00003517d4>] __flush_work+0x2a4/0x2e0 [<fffffc00003d3ea4>] lru_add_drain_all+0xe4/0x190 [<fffffc000044ef50>] shrink_dcache_sb+0x70/0xb0 [<fffffc0000478dc4>] invalidate_bh_lru+0x44/0x80 [<fffffc00003a94fc>] on_each_cpu_cond+0x5c/0x90 [<fffffc0000478d80>] invalidate_bh_lru+0x0/0x80 [<fffffc000047fe7c>] invalidate_bdev+0x3c/0x70 [<fffffc0000432ca8>] reconfigure_super+0x178/0x2c0 [<fffffc000045ee64>] ksys_umount+0x664/0x680 [<fffffc000045ee9c>] sys_umount+0x1c/0x30 [<fffffc00003115d4>] entSys+0xa4/0xc0 [<fffffc00003115d4>] entSys+0xa4/0xc0
---[ end trace 613cea34708701f1 ]---
The problem is seen with several (but not all) architectures. Affected architectures/platforms are: alpha arm:versatilepb m68k mips, mips64 (boot from IDE drive or MMC, SMP disabled) parisc (nosmp builds) sparc, sparc64 (nosmp builds)
There may be others; several of my tests fail with build failures.
If/when it is seen, the problem is persistent.
Common denominator seems to be that SMP is disabled. It does appear that for_each_cpu() ignores the mask for nosmp builds, but I don't really understand why.
Guenter
| |