On Wed, Aug 19, 2020 at 12:15:46PM -0700, Randy Dunlap wrote: > On Linux kernel tree v5.9-rc1, with sparse v0.6.2-180-g49f7e13a, > I see this sparse warning which I don't grok: > > ../include/uapi/asm-generic/signal-defs.h:19:29: CK: error: multiple address spaces given > > for this source code: > > typedef void __signalfn_t(int); > typedef __signalfn_t __user *__sighandler_t; <<<<< line 19 > > Are there multiple address spaces there? What are they? > > > > or: is the warning related to the other nearby warnings? (e.g.:) > > ../kernel/signal.c:541:53: CK: warning: incorrect type in initializer (different address spaces) > ../kernel/signal.c:541:53: CK: expected struct k_sigaction *ka > ../kernel/signal.c:541:53: CK: got struct k_sigaction [noderef] __rcu * > ../include/uapi/asm-generic/signal-defs.h:19:29: CK: error: multiple address spaces given > ../kernel/signal.c:694:33: CK: warning: incorrect type in argument 1 (different address spaces) > ../kernel/signal.c:694:33: CK: expected struct spinlock [usertype] *lock > ../kernel/signal.c:694:33: CK: got struct spinlock [noderef] __rcu * I would guess that this __sighandler_t is used somewhere in a struct which is itself accessed via a __rcu pointer. But that would not explain the level of dereference. I'll need to check this one. -- Luc