Hi Brian, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on dennis-percpu/for-next] [also build test WARNING on tip/auto-latest linus/master linux/master v5.7-rc5 next-20200515] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/Brian-Gerst/x86-Clean-up-percpu-operations/20200517-233137 base: https://git.kernel.org/pub/scm/linux/kernel/git/dennis/percpu.git for-next config: x86_64-allyesconfig (attached as .config) reproduce: # apt-get install sparse # sparse version: v0.6.1-193-gb8fad4bc-dirty # save the attached .config to linux build tree make C=1 ARCH=x86_64 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' If you fix the issue, kindly add following tag as appropriate Reported-by: kbuild test robot sparse warnings: (new ones prefixed by >>) kernel/fork.c:995:19: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct task_struct [noderef] *owner @@ got [noderef] *owner @@ kernel/fork.c:995:19: sparse: expected struct task_struct [noderef] *owner kernel/fork.c:995:19: sparse: got struct task_struct *p kernel/fork.c:1507:38: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct refcount_struct [usertype] *r @@ got struct struct refcount_struct [usertype] *r @@ kernel/fork.c:1507:38: sparse: expected struct refcount_struct [usertype] *r kernel/fork.c:1507:38: sparse: got struct refcount_struct [noderef] * kernel/fork.c:1516:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ kernel/fork.c:1516:31: sparse: expected struct spinlock [usertype] *lock kernel/fork.c:1516:31: sparse: got struct spinlock [noderef] * kernel/fork.c:1517:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const *from @@ got struct k_sigaction [noderevoid const *from @@ kernel/fork.c:1517:9: sparse: expected void const *from kernel/fork.c:1517:9: sparse: got struct k_sigaction [noderef] * kernel/fork.c:1518:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ kernel/fork.c:1518:33: sparse: expected struct spinlock [usertype] *lock kernel/fork.c:1518:33: sparse: got struct spinlock [noderef] * kernel/fork.c:1610:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct qspinlock *lock @@ got struct qspinlock [struct qspinlock *lock @@ kernel/fork.c:1610:9: sparse: expected struct qspinlock *lock kernel/fork.c:1610:9: sparse: got struct qspinlock [noderef] * kernel/fork.c:1910:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ kernel/fork.c:1910:31: sparse: expected struct spinlock [usertype] *lock kernel/fork.c:1910:31: sparse: got struct spinlock [noderef] * kernel/fork.c:1914:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ kernel/fork.c:1914:33: sparse: expected struct spinlock [usertype] *lock kernel/fork.c:1914:33: sparse: got struct spinlock [noderef] * kernel/fork.c:2210:32: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct task_struct [noderef] *real_parent @@ got [noderef] *real_parent @@ kernel/fork.c:2210:32: sparse: expected struct task_struct [noderef] *real_parent kernel/fork.c:2210:32: sparse: got struct task_struct * kernel/fork.c:2216:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ kernel/fork.c:2216:27: sparse: expected struct spinlock [usertype] *lock kernel/fork.c:2216:27: sparse: got struct spinlock [noderef] * kernel/fork.c:2265:54: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct list_head *head @@ got struct list_head [struct list_head *head @@ kernel/fork.c:2265:54: sparse: expected struct list_head *head kernel/fork.c:2265:54: sparse: got struct list_head [noderef] * kernel/fork.c:2286:29: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ kernel/fork.c:2286:29: sparse: expected struct spinlock [usertype] *lock kernel/fork.c:2286:29: sparse: got struct spinlock [noderef] * kernel/fork.c:2301:29: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ kernel/fork.c:2301:29: sparse: expected struct spinlock [usertype] *lock kernel/fork.c:2301:29: sparse: got struct spinlock [noderef] * kernel/fork.c:2330:28: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct sighand_struct *sighand @@ got struct sighand_strstruct sighand_struct *sighand @@ kernel/fork.c:2330:28: sparse: expected struct sighand_struct *sighand kernel/fork.c:2330:28: sparse: got struct sighand_struct [noderef] *sighand kernel/fork.c:2358:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ kernel/fork.c:2358:31: sparse: expected struct spinlock [usertype] *lock kernel/fork.c:2358:31: sparse: got struct spinlock [noderef] * kernel/fork.c:2360:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ kernel/fork.c:2360:33: sparse: expected struct spinlock [usertype] *lock kernel/fork.c:2360:33: sparse: got struct spinlock [noderef] * kernel/fork.c:2766:24: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct task_struct *[assigned] parent @@ got struct struct task_struct *[assigned] parent @@ kernel/fork.c:2766:24: sparse: expected struct task_struct *[assigned] parent kernel/fork.c:2766:24: sparse: got struct task_struct [noderef] *real_parent kernel/fork.c:2847:43: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct refcount_struct const [usertype] *r @@ got sstruct refcount_struct const [usertype] *r @@ kernel/fork.c:2847:43: sparse: expected struct refcount_struct const [usertype] *r kernel/fork.c:2847:43: sparse: got struct refcount_struct [noderef] * kernel/fork.c:1945:27: sparse: sparse: dereference of noderef expression kernel/fork.c:1945:27: sparse: sparse: dereference of noderef expression kernel/fork.c:1947:22: sparse: sparse: dereference of noderef expression include/linux/ptrace.h:218:45: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct task_struct *new_parent @@ got struct task_structstruct task_struct *new_parent @@ include/linux/ptrace.h:218:45: sparse: expected struct task_struct *new_parent include/linux/ptrace.h:218:45: sparse: got struct task_struct [noderef] *parent include/linux/ptrace.h:218:62: sparse: sparse: incorrect type in argument 3 (different address spaces) @@ expected struct cred const *ptracer_cred @@ got struct cred const struct cred const *ptracer_cred @@ include/linux/ptrace.h:218:62: sparse: expected struct cred const *ptracer_cred include/linux/ptrace.h:218:62: sparse: got struct cred const [noderef] *ptracer_cred kernel/fork.c:2263:59: sparse: sparse: dereference of noderef expression kernel/fork.c:2264:59: sparse: sparse: dereference of noderef expression include/linux/percpu-rwsem.h:91:17: sparse: sparse: cast truncates bits from constant value (ffffffff becomes ff) >> include/linux/percpu-rwsem.h:91:17: sparse: sparse: cast truncates bits from constant value (ffffffff becomes ffff) kernel/fork.c:987:23: sparse: sparse: incompatible types in comparison expression (different address spaces): kernel/fork.c:987:23: sparse: struct task_struct [noderef] * kernel/fork.c:987:23: sparse: struct task_struct * -- include/linux/percpu-rwsem.h:91:17: sparse: sparse: cast truncates bits from constant value (ffffffff becomes ff) >> include/linux/percpu-rwsem.h:91:17: sparse: sparse: cast truncates bits from constant value (ffffffff becomes ffff) kernel/cpu.c:827:9: sparse: sparse: context imbalance in 'clear_tasks_mm_cpumask' - different lock contexts for basic block -- kernel/signal.c:2919:27: sparse: got struct spinlock [noderef] * kernel/signal.c:2921:29: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ kernel/signal.c:2921:29: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:2921:29: sparse: got struct spinlock [noderef] * kernel/signal.c:3072:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ kernel/signal.c:3072:31: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:3072:31: sparse: got struct spinlock [noderef] * kernel/signal.c:3075:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ kernel/signal.c:3075:33: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:3075:33: sparse: got struct spinlock [noderef] * kernel/signal.c:3458:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ kernel/signal.c:3458:27: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:3458:27: sparse: got struct spinlock [noderef] * kernel/signal.c:3470:37: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ kernel/signal.c:3470:37: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:3470:37: sparse: got struct spinlock [noderef] * kernel/signal.c:3475:35: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ kernel/signal.c:3475:35: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:3475:35: sparse: got struct spinlock [noderef] * kernel/signal.c:3480:29: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ kernel/signal.c:3480:29: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:3480:29: sparse: got struct spinlock [noderef] * kernel/signal.c:3681:46: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct siginfo const [noderef] [usertype] *from @@ got deref] [usertype] *from @@ kernel/signal.c:3681:46: sparse: expected struct siginfo const [noderef] [usertype] *from kernel/signal.c:3681:46: sparse: got struct siginfo [usertype] *info kernel/signal.c:3933:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ kernel/signal.c:3933:31: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:3933:31: sparse: got struct spinlock [noderef] * kernel/signal.c:3945:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ kernel/signal.c:3945:33: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:3945:33: sparse: got struct spinlock [noderef] * kernel/signal.c:3963:11: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct k_sigaction *k @@ got struct k_sigactionstruct k_sigaction *k @@ kernel/signal.c:3963:11: sparse: expected struct k_sigaction *k kernel/signal.c:3963:11: sparse: got struct k_sigaction [noderef] * kernel/signal.c:3965:25: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ kernel/signal.c:3965:25: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:3965:25: sparse: got struct spinlock [noderef] * kernel/signal.c:3995:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ kernel/signal.c:3995:27: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:3995:27: sparse: got struct spinlock [noderef] * kernel/signal.c:4594:29: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ kernel/signal.c:4594:29: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:4594:29: sparse: got struct spinlock [noderef] * kernel/signal.c:4603:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ kernel/signal.c:4603:31: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:4603:31: sparse: got struct spinlock [noderef] * kernel/signal.c:4613:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ kernel/signal.c:4613:23: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:4613:23: sparse: got struct spinlock [noderef] * kernel/signal.c:69:34: sparse: sparse: dereference of noderef expression kernel/signal.c:528:35: sparse: sparse: dereference of noderef expression kernel/signal.c:556:52: sparse: sparse: dereference of noderef expression kernel/signal.c:1030:13: sparse: sparse: dereference of noderef expression include/linux/signalfd.h:21:13: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct wait_queue_head *wq_head @@ got struct wait_queue_struct wait_queue_head *wq_head @@ include/linux/signalfd.h:21:13: sparse: expected struct wait_queue_head *wq_head include/linux/signalfd.h:21:13: sparse: got struct wait_queue_head [noderef] * include/linux/signalfd.h:22:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct wait_queue_head *wq_head @@ got struct wait_queue_struct wait_queue_head *wq_head @@ include/linux/signalfd.h:22:17: sparse: expected struct wait_queue_head *wq_head include/linux/signalfd.h:22:17: sparse: got struct wait_queue_head [noderef] * include/linux/sched/signal.h:681:37: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ include/linux/sched/signal.h:681:37: sparse: expected struct spinlock [usertype] *lock include/linux/sched/signal.h:681:37: sparse: got struct spinlock [noderef] * kernel/signal.c:1294:9: sparse: sparse: context imbalance in 'do_send_sig_info' - different lock contexts for basic block include/linux/rcupdate.h:651:9: sparse: sparse: context imbalance in '__lock_task_sighand' - different lock contexts for basic block include/linux/sched/signal.h:681:37: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ include/linux/sched/signal.h:681:37: sparse: expected struct spinlock [usertype] *lock include/linux/sched/signal.h:681:37: sparse: got struct spinlock [noderef] * kernel/signal.c:1650:35: sparse: sparse: dereference of noderef expression include/linux/signalfd.h:21:13: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct wait_queue_head *wq_head @@ got struct wait_queue_struct wait_queue_head *wq_head @@ include/linux/signalfd.h:21:13: sparse: expected struct wait_queue_head *wq_head include/linux/signalfd.h:21:13: sparse: got struct wait_queue_head [noderef] * include/linux/signalfd.h:22:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct wait_queue_head *wq_head @@ got struct wait_queue_struct wait_queue_head *wq_head @@ include/linux/signalfd.h:22:17: sparse: expected struct wait_queue_head *wq_head include/linux/signalfd.h:22:17: sparse: got struct wait_queue_head [noderef] * include/linux/sched/signal.h:681:37: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ include/linux/sched/signal.h:681:37: sparse: expected struct spinlock [usertype] *lock include/linux/sched/signal.h:681:37: sparse: got struct spinlock [noderef] * include/linux/rcupdate.h:653:9: sparse: sparse: context imbalance in 'send_sigqueue' - wrong count at exit kernel/signal.c:1934:47: sparse: sparse: dereference of noderef expression kernel/signal.c:1954:40: sparse: sparse: dereference of noderef expression kernel/signal.c:1954:40: sparse: sparse: dereference of noderef expression kernel/signal.c:2093:13: sparse: sparse: dereference of noderef expression include/linux/ptrace.h:99:40: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *p1 @@ got struct task_structstruct task_struct *p1 @@ include/linux/ptrace.h:99:40: sparse: expected struct task_struct *p1 include/linux/ptrace.h:99:40: sparse: got struct task_struct [noderef] *real_parent include/linux/ptrace.h:99:60: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct task_struct *p2 @@ got struct task_structstruct task_struct *p2 @@ include/linux/ptrace.h:99:60: sparse: expected struct task_struct *p2 include/linux/ptrace.h:99:60: sparse: got struct task_struct [noderef] *parent kernel/signal.c:2304:13: sparse: sparse: context imbalance in 'do_signal_stop' - different lock contexts for basic block kernel/signal.c:2513:49: sparse: sparse: dereference of noderef expression kernel/signal.c:2513:49: sparse: sparse: dereference of noderef expression include/linux/ptrace.h:99:40: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *p1 @@ got struct task_structstruct task_struct *p1 @@ include/linux/ptrace.h:99:40: sparse: expected struct task_struct *p1 include/linux/ptrace.h:99:40: sparse: got struct task_struct [noderef] *real_parent include/linux/ptrace.h:99:60: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct task_struct *p2 @@ got struct task_structstruct task_struct *p2 @@ include/linux/ptrace.h:99:60: sparse: expected struct task_struct *p2 include/linux/ptrace.h:99:60: sparse: got struct task_struct [noderef] *parent kernel/signal.c:2596:69: sparse: sparse: context imbalance in 'get_signal' - unexpected unlock include/linux/percpu-rwsem.h:91:17: sparse: sparse: cast truncates bits from constant value (ffffffff becomes ff) >> include/linux/percpu-rwsem.h:91:17: sparse: sparse: cast truncates bits from constant value (ffffffff becomes ffff) kernel/signal.c:3741:58: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct siginfo [usertype] *info @@ got struct siginfo [nostruct siginfo [usertype] *info @@ kernel/signal.c:3741:58: sparse: expected struct siginfo [usertype] *info kernel/signal.c:3741:58: sparse: got struct siginfo [noderef] [usertype] *info kernel/signal.c:3934:33: sparse: sparse: dereference of noderef expression -- kernel/locking/locktorture.c:575:6: sparse: sparse: symbol 'torture_percpu_rwsem_init' was not declared. Should it be static? kernel/locking/locktorture.c:320:12: sparse: sparse: context imbalance in 'torture_mutex_lock' - wrong count at exit kernel/locking/locktorture.c:340:13: sparse: sparse: context imbalance in 'torture_mutex_unlock' - wrong count at exit kernel/locking/locktorture.c:362:12: sparse: sparse: context imbalance in 'torture_ww_mutex_lock' - wrong count at exit kernel/locking/locktorture.c:407:13: sparse: sparse: context imbalance in 'torture_ww_mutex_unlock' - wrong count at exit kernel/locking/locktorture.c:431:12: sparse: sparse: context imbalance in 'torture_rtmutex_lock' - wrong count at exit kernel/locking/locktorture.c:493:13: sparse: sparse: context imbalance in 'torture_rtmutex_unlock' - wrong count at exit kernel/locking/locktorture.c:511:12: sparse: sparse: context imbalance in 'torture_rwsem_down_write' - wrong count at exit kernel/locking/locktorture.c:531:13: sparse: sparse: context imbalance in 'torture_rwsem_up_write' - wrong count at exit kernel/locking/locktorture.c:536:12: sparse: sparse: context imbalance in 'torture_rwsem_down_read' - wrong count at exit kernel/locking/locktorture.c:556:13: sparse: sparse: context imbalance in 'torture_rwsem_up_read' - wrong count at exit kernel/locking/locktorture.c:580:12: sparse: sparse: context imbalance in 'torture_percpu_rwsem_down_write' - wrong count at exit kernel/locking/locktorture.c:586:13: sparse: sparse: context imbalance in 'torture_percpu_rwsem_up_write' - wrong count at exit include/linux/percpu-rwsem.h:58:9: sparse: sparse: context imbalance in 'torture_percpu_rwsem_down_read' - wrong count at exit include/linux/percpu-rwsem.h:91:17: sparse: sparse: cast truncates bits from constant value (ffffffff becomes ff) >> include/linux/percpu-rwsem.h:91:17: sparse: sparse: cast truncates bits from constant value (ffffffff becomes ffff) include/linux/percpu-rwsem.h:94:9: sparse: sparse: context imbalance in 'torture_percpu_rwsem_up_read' - wrong count at exit -- net/sched/sch_generic.c:189:50: sparse: sparse: context imbalance in 'try_bulk_dequeue_skb_slow' - different lock contexts for basic block include/net/sch_generic.h:888:9: sparse: sparse: cast truncates bits from constant value (ffffffff becomes ff) >> include/net/sch_generic.h:888:9: sparse: sparse: cast truncates bits from constant value (ffffffff becomes ffff) net/sched/sch_generic.c:248:17: sparse: sparse: context imbalance in 'dequeue_skb' - different lock contexts for basic block net/sched/sch_generic.c:294:28: sparse: sparse: context imbalance in 'sch_direct_xmit' - unexpected unlock net/sched/sch_generic.c:1127:9: sparse: sparse: context imbalance in 'dev_deactivate_queue' - different lock contexts for basic block -- kernel/events/uprobes.c:1978:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ kernel/events/uprobes.c:1978:33: sparse: expected struct spinlock [usertype] *lock kernel/events/uprobes.c:1978:33: sparse: got struct spinlock [noderef] * kernel/events/uprobes.c:1980:35: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ kernel/events/uprobes.c:1980:35: sparse: expected struct spinlock [usertype] *lock kernel/events/uprobes.c:1980:35: sparse: got struct spinlock [noderef] * kernel/events/uprobes.c:2277:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ kernel/events/uprobes.c:2277:31: sparse: expected struct spinlock [usertype] *lock kernel/events/uprobes.c:2277:31: sparse: got struct spinlock [noderef] * kernel/events/uprobes.c:2279:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct struct spinlock [usertype] *lock @@ kernel/events/uprobes.c:2279:33: sparse: expected struct spinlock [usertype] *lock kernel/events/uprobes.c:2279:33: sparse: got struct spinlock [noderef] * include/linux/rmap.h:220:28: sparse: sparse: context imbalance in '__replace_page' - unexpected unlock include/linux/percpu-rwsem.h:91:17: sparse: sparse: cast truncates bits from constant value (ffffffff becomes ff) >> include/linux/percpu-rwsem.h:91:17: sparse: sparse: cast truncates bits from constant value (ffffffff becomes ffff) -- drivers/infiniband/hw/hfi1/pio_copy.c:421:24: sparse: sparse: cast removes address space '' of expression drivers/infiniband/hw/hfi1/pio_copy.c:421:24: sparse: sparse: cast removes address space '' of expression drivers/infiniband/hw/hfi1/pio_copy.c:547:24: sparse: sparse: cast removes address space '' of expression drivers/infiniband/hw/hfi1/pio_copy.c:547:24: sparse: sparse: cast removes address space '' of expression drivers/infiniband/hw/hfi1/pio_copy.c:164:9: sparse: sparse: cast truncates bits from constant value (ffffffff becomes ff) >> drivers/infiniband/hw/hfi1/pio_copy.c:164:9: sparse: sparse: cast truncates bits from constant value (ffffffff becomes ffff) drivers/infiniband/hw/hfi1/pio_copy.c:755:9: sparse: sparse: cast truncates bits from constant value (ffffffff becomes ff) drivers/infiniband/hw/hfi1/pio_copy.c:755:9: sparse: sparse: cast truncates bits from constant value (ffffffff becomes ffff) vim +91 include/linux/percpu-rwsem.h 80127a39681bd6 Peter Zijlstra 2016-07-14 83 02e525b2aff1d6 Peter Zijlstra 2019-02-21 84 static inline void percpu_up_read(struct percpu_rw_semaphore *sem) 80127a39681bd6 Peter Zijlstra 2016-07-14 85 { 02e525b2aff1d6 Peter Zijlstra 2019-02-21 86 preempt_disable(); 80127a39681bd6 Peter Zijlstra 2016-07-14 87 /* 80127a39681bd6 Peter Zijlstra 2016-07-14 88 * Same as in percpu_down_read(). 80127a39681bd6 Peter Zijlstra 2016-07-14 89 */ 80127a39681bd6 Peter Zijlstra 2016-07-14 90 if (likely(rcu_sync_is_idle(&sem->rss))) 80127a39681bd6 Peter Zijlstra 2016-07-14 @91 __this_cpu_dec(*sem->read_count); 80127a39681bd6 Peter Zijlstra 2016-07-14 92 else 80127a39681bd6 Peter Zijlstra 2016-07-14 93 __percpu_up_read(sem); /* Unconditional memory barrier */ 80127a39681bd6 Peter Zijlstra 2016-07-14 94 preempt_enable(); 80127a39681bd6 Peter Zijlstra 2016-07-14 95 5facae4f3549b5 Qian Cai 2019-09-19 96 rwsem_release(&sem->rw_sem.dep_map, _RET_IP_); 80127a39681bd6 Peter Zijlstra 2016-07-14 97 } 5c1eabe68501d1 Mikulas Patocka 2012-10-22 98 :::::: The code at line 91 was first introduced by commit :::::: 80127a39681bd68c959f0953f84a830cbd7c3b1c locking/percpu-rwsem: Optimize readers and reduce global impact :::::: TO: Peter Zijlstra :::::: CC: Ingo Molnar --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org