CC: kbuild-all(a)lists.01.org BCC: lkp(a)intel.com In-Reply-To: <20220426225211.308418-6-ebiederm@xmission.com> References: <20220426225211.308418-6-ebiederm@xmission.com> TO: "Eric W. Biederman" TO: linux-kernel(a)vger.kernel.org CC: rjw(a)rjwysocki.net CC: Oleg Nesterov CC: mingo(a)kernel.org CC: vincent.guittot(a)linaro.org CC: dietmar.eggemann(a)arm.com CC: rostedt(a)goodmis.org CC: mgorman(a)suse.de CC: bigeasy(a)linutronix.de CC: Will Deacon CC: tj(a)kernel.org CC: linux-pm(a)vger.kernel.org CC: Peter Zijlstra CC: Richard Weinberger CC: Anton Ivanov CC: Johannes Berg CC: linux-um(a)lists.infradead.org CC: Chris Zankel CC: Max Filippov CC: inux-xtensa(a)linux-xtensa.org CC: Kees Cook CC: Jann Horn CC: "Eric W. Biederman" Hi "Eric, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on tty/tty-testing] [also build test WARNING on tip/timers/core linus/master v5.18-rc4 next-20220428] [cannot apply to linux/master] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/intel-lab-lkp/linux/commits/Eric-W-Biederman/signal-Rename-send_signal-send_signal_locked/20220427-065551 base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git tty-testing :::::: branch date: 2 days ago :::::: commit date: 2 days ago config: parisc-randconfig-s031-20220425 (https://download.01.org/0day-ci/archive/20220429/202204290612.ieU6Djcy-lkp(a)intel.com/config) compiler: hppa-linux-gcc (GCC) 11.3.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # apt-get install sparse # sparse version: v0.6.4-dirty # https://github.com/intel-lab-lkp/linux/commit/1d8ae697c0ac6bf1f99f694c9976ceac8a336f4b git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Eric-W-Biederman/signal-Rename-send_signal-send_signal_locked/20220427-065551 git checkout 1d8ae697c0ac6bf1f99f694c9976ceac8a336f4b # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=parisc SHELL=/bin/bash If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot sparse warnings: (new ones prefixed by >>) kernel/signal.c: note: in included file (through arch/parisc/include/uapi/asm/signal.h, arch/parisc/include/asm/signal.h, include/uapi/linux/signal.h, ...): include/uapi/asm-generic/signal-defs.h:83:29: sparse: sparse: multiple address spaces given kernel/signal.c:195:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:195:31: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:195:31: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:198:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:198:33: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:198:33: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:480:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:480:9: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:480:9: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:484:34: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:484:34: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:484:34: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:542:53: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct k_sigaction *ka @@ got struct k_sigaction [noderef] __rcu * @@ kernel/signal.c:542:53: sparse: expected struct k_sigaction *ka kernel/signal.c:542:53: sparse: got struct k_sigaction [noderef] __rcu * include/uapi/asm-generic/signal-defs.h:83:29: sparse: sparse: multiple address spaces given kernel/signal.c:887:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct arch_spinlock_t [usertype] *x @@ got struct arch_spinlock_t [noderef] __rcu * @@ kernel/signal.c:887:9: sparse: expected struct arch_spinlock_t [usertype] *x kernel/signal.c:887:9: sparse: got struct arch_spinlock_t [noderef] __rcu * kernel/signal.c:1082:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct arch_spinlock_t [usertype] *x @@ got struct arch_spinlock_t [noderef] __rcu * @@ kernel/signal.c:1082:9: sparse: expected struct arch_spinlock_t [usertype] *x kernel/signal.c:1082:9: sparse: got struct arch_spinlock_t [noderef] __rcu * kernel/signal.c:1257:9: sparse: sparse: no member 'ip' in struct pt_regs kernel/signal.c:1263:29: sparse: sparse: no member 'ip' in struct pt_regs kernel/signal.c:1263:29: sparse: sparse: cast from unknown type kernel/signal.c:1263:29: sparse: sparse: cannot dereference this type kernel/signal.c:1263:29: sparse: sparse: no member 'ip' in struct pt_regs kernel/signal.c:1263:29: sparse: sparse: cast from unknown type kernel/signal.c:1263:29: sparse: sparse: no member 'ip' in struct pt_regs kernel/signal.c:1263:29: sparse: sparse: cast from unknown type kernel/signal.c:1263:29: sparse: sparse: cannot dereference this type kernel/signal.c:1263:29: sparse: sparse: no member 'ip' in struct pt_regs kernel/signal.c:1263:29: sparse: sparse: cast from unknown type kernel/signal.c:1263:29: sparse: sparse: no member 'ip' in struct pt_regs kernel/signal.c:1263:29: sparse: sparse: cast from unknown type kernel/signal.c:1263:29: sparse: sparse: cannot dereference this type kernel/signal.c:1263:29: sparse: sparse: no member 'ip' in struct pt_regs kernel/signal.c:1263:29: sparse: sparse: cast from unknown type kernel/signal.c:1263:29: sparse: sparse: no member 'ip' in struct pt_regs kernel/signal.c:1263:29: sparse: sparse: cast from unknown type kernel/signal.c:1263:29: sparse: sparse: cannot dereference this type kernel/signal.c:1263:29: sparse: sparse: no member 'ip' in struct pt_regs kernel/signal.c:1263:29: sparse: sparse: cast from unknown type kernel/signal.c:1263:29: sparse: sparse: cannot dereference this type kernel/signal.c:1263:29: sparse: sparse: no member 'ip' in struct pt_regs kernel/signal.c:1263:29: sparse: sparse: cast from unknown type kernel/signal.c:1263:29: sparse: sparse: incompatible types for 'case' statement kernel/signal.c:1263:29: sparse: sparse: incompatible types for 'case' statement kernel/signal.c:1263:29: sparse: sparse: incompatible types for 'case' statement kernel/signal.c:1263:29: sparse: sparse: incompatible types for 'case' statement kernel/signal.c:1324:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:1324:9: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:1324:9: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:1325:16: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct k_sigaction *action @@ got struct k_sigaction [noderef] __rcu * @@ kernel/signal.c:1325:16: sparse: expected struct k_sigaction *action kernel/signal.c:1325:16: sparse: got struct k_sigaction [noderef] __rcu * kernel/signal.c:1345:34: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:1345:34: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:1345:34: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:1923:36: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:1923:36: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:1923:36: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:2033:44: sparse: sparse: cast removes address space '__rcu' of expression kernel/signal.c:2052:65: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *tsk @@ got struct task_struct [noderef] __rcu *parent @@ kernel/signal.c:2052:65: sparse: expected struct task_struct *tsk kernel/signal.c:2052:65: sparse: got struct task_struct [noderef] __rcu *parent kernel/signal.c:2053:40: sparse: sparse: cast removes address space '__rcu' of expression kernel/signal.c:2071:14: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sighand_struct *psig @@ got struct sighand_struct [noderef] __rcu *[noderef] __rcu sighand @@ kernel/signal.c:2071:14: sparse: expected struct sighand_struct *psig kernel/signal.c:2071:14: sparse: got struct sighand_struct [noderef] __rcu *[noderef] __rcu sighand kernel/signal.c:2100:53: sparse: sparse: incorrect type in argument 3 (different address spaces) @@ expected struct task_struct *t @@ got struct task_struct [noderef] __rcu *parent @@ kernel/signal.c:2100:53: sparse: expected struct task_struct *t kernel/signal.c:2100:53: sparse: got struct task_struct [noderef] __rcu *parent kernel/signal.c:2101:34: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct task_struct *parent @@ got struct task_struct [noderef] __rcu *parent @@ kernel/signal.c:2101:34: sparse: expected struct task_struct *parent kernel/signal.c:2101:34: sparse: got struct task_struct [noderef] __rcu *parent kernel/signal.c:2129:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct arch_spinlock_t [usertype] *x @@ got struct arch_spinlock_t [noderef] __rcu * @@ kernel/signal.c:2129:9: sparse: expected struct arch_spinlock_t [usertype] *x kernel/signal.c:2129:9: sparse: got struct arch_spinlock_t [noderef] __rcu * kernel/signal.c:2132:24: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct task_struct *parent @@ got struct task_struct [noderef] __rcu *parent @@ kernel/signal.c:2132:24: sparse: expected struct task_struct *parent kernel/signal.c:2132:24: sparse: got struct task_struct [noderef] __rcu *parent kernel/signal.c:2135:24: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct task_struct *parent @@ got struct task_struct [noderef] __rcu *real_parent @@ kernel/signal.c:2135:24: sparse: expected struct task_struct *parent kernel/signal.c:2135:24: sparse: got struct task_struct [noderef] __rcu *real_parent kernel/signal.c:2168:17: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct sighand_struct *sighand @@ got struct sighand_struct [noderef] __rcu *sighand @@ kernel/signal.c:2168:17: sparse: expected struct sighand_struct *sighand kernel/signal.c:2168:17: sparse: got struct sighand_struct [noderef] __rcu *sighand kernel/signal.c:2169:29: sparse: sparse: incompatible types in comparison expression (different address spaces): >> kernel/signal.c:2169:29: sparse: struct sighand_struct [noderef] __rcu * kernel/signal.c:2169:29: sparse: struct sighand_struct * kernel/signal.c:2211:41: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:2211:41: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:2211:41: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:2213:39: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:2213:39: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:2213:39: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:2290:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:2290:33: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:2290:33: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:2302:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:2302:31: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:2302:31: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:2342:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:2342:31: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:2342:31: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:2344:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:2344:33: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:2344:33: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:2441:41: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:2441:41: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:2441:41: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:2510:41: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:2510:41: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:2510:41: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:2522:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:2522:33: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:2522:33: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:2557:52: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *tsk @@ got struct task_struct [noderef] __rcu *parent @@ kernel/signal.c:2557:52: sparse: expected struct task_struct *tsk kernel/signal.c:2557:52: sparse: got struct task_struct [noderef] __rcu *parent kernel/signal.c:2559:49: sparse: sparse: cast removes address space '__rcu' of expression kernel/signal.c:2597:49: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sighand_struct *sighand @@ got struct sighand_struct [noderef] __rcu *sighand @@ kernel/signal.c:2597:49: sparse: expected struct sighand_struct *sighand kernel/signal.c:2597:49: sparse: got struct sighand_struct [noderef] __rcu *sighand kernel/signal.c:2918:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:2918:27: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:2918:27: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:2942:29: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:2942:29: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:2942:29: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:2999:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:2999:27: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:2999:27: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:3001:29: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:3001:29: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:3001:29: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:3152:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:3152:31: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:3152:31: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:3155:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:3155:33: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:3155:33: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:3542:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:3542:27: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:3542:27: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:3554:37: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:3554:37: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:3554:37: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:3559:35: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:3559:35: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:3559:35: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:3564:29: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:3564:29: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:3564:29: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:4018:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:4018:31: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:4018:31: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:4030:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:4030:33: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:4030:33: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:4048:11: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct k_sigaction *k @@ got struct k_sigaction [noderef] __rcu * @@ kernel/signal.c:4048:11: sparse: expected struct k_sigaction *k kernel/signal.c:4048:11: sparse: got struct k_sigaction [noderef] __rcu * kernel/signal.c:4050:25: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:4050:25: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:4050:25: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:4052:35: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:4052:35: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:4052:35: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:4100:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/signal.c:4100:27: sparse: expected struct spinlock [usertype] *lock kernel/signal.c:4100:27: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:69:34: sparse: sparse: dereference of noderef expression kernel/signal.c:529:35: sparse: sparse: dereference of noderef expression kernel/signal.c:557:52: sparse: sparse: dereference of noderef expression kernel/signal.c:1034:13: sparse: sparse: dereference of noderef expression kernel/signal.c: note: in included file (through include/linux/sched/cputime.h): include/linux/sched/signal.h:731:37: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ include/linux/sched/signal.h:731:37: sparse: expected struct spinlock [usertype] *lock include/linux/sched/signal.h:731:37: sparse: got struct spinlock [noderef] __rcu * kernel/signal.c:1295:9: sparse: sparse: context imbalance in 'do_send_sig_info' - different lock contexts for basic block kernel/signal.c: note: in included file (through include/linux/rbtree.h, include/linux/mm_types.h, include/linux/mmzone.h, ...): include/linux/rcupdate.h:725:9: sparse: sparse: context imbalance in '__lock_task_sighand' - different lock contexts for basic block kernel/signal.c: note: in included file (through include/linux/sched/cputime.h): include/linux/sched/signal.h:731:37: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ include/linux/sched/signal.h:731:37: sparse: expected struct spinlock [usertype] *lock include/linux/sched/signal.h:731:37: sparse: got struct spinlock [noderef] __rcu * include/linux/sched/signal.h:731:37: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ include/linux/sched/signal.h:731:37: sparse: expected struct spinlock [usertype] *lock vim +2169 kernel/signal.c ^1da177e4c3f41 Linus Torvalds 2005-04-16 2106 75b95953a56969 Tejun Heo 2011-03-23 2107 /** 75b95953a56969 Tejun Heo 2011-03-23 2108 * do_notify_parent_cldstop - notify parent of stopped/continued state change 75b95953a56969 Tejun Heo 2011-03-23 2109 * @tsk: task reporting the state change 75b95953a56969 Tejun Heo 2011-03-23 2110 * @for_ptracer: the notification is for ptracer 75b95953a56969 Tejun Heo 2011-03-23 2111 * @why: CLD_{CONTINUED|STOPPED|TRAPPED} to report 75b95953a56969 Tejun Heo 2011-03-23 2112 * 75b95953a56969 Tejun Heo 2011-03-23 2113 * Notify @tsk's parent that the stopped/continued state has changed. If 75b95953a56969 Tejun Heo 2011-03-23 2114 * @for_ptracer is %false, @tsk's group leader notifies to its real parent. 75b95953a56969 Tejun Heo 2011-03-23 2115 * If %true, @tsk reports to @tsk->parent which should be the ptracer. 75b95953a56969 Tejun Heo 2011-03-23 2116 * 75b95953a56969 Tejun Heo 2011-03-23 2117 * CONTEXT: 75b95953a56969 Tejun Heo 2011-03-23 2118 * Must be called with tasklist_lock at least read locked. 75b95953a56969 Tejun Heo 2011-03-23 2119 */ 75b95953a56969 Tejun Heo 2011-03-23 2120 static void do_notify_parent_cldstop(struct task_struct *tsk, 75b95953a56969 Tejun Heo 2011-03-23 2121 bool for_ptracer, int why) ^1da177e4c3f41 Linus Torvalds 2005-04-16 2122 { ae7795bc6187a1 Eric W. Biederman 2018-09-25 2123 struct kernel_siginfo info; bc505a478d3fff Oleg Nesterov 2005-09-06 2124 struct task_struct *parent; ^1da177e4c3f41 Linus Torvalds 2005-04-16 2125 struct sighand_struct *sighand; 1d8ae697c0ac6b Eric W. Biederman 2022-04-26 2126 bool lock; bde8285e5cf784 Frederic Weisbecker 2017-01-31 2127 u64 utime, stime; ^1da177e4c3f41 Linus Torvalds 2005-04-16 2128 1d8ae697c0ac6b Eric W. Biederman 2022-04-26 2129 assert_spin_locked(&tsk->sighand->siglock); 1d8ae697c0ac6b Eric W. Biederman 2022-04-26 2130 75b95953a56969 Tejun Heo 2011-03-23 2131 if (for_ptracer) { bc505a478d3fff Oleg Nesterov 2005-09-06 2132 parent = tsk->parent; 75b95953a56969 Tejun Heo 2011-03-23 2133 } else { bc505a478d3fff Oleg Nesterov 2005-09-06 2134 tsk = tsk->group_leader; bc505a478d3fff Oleg Nesterov 2005-09-06 2135 parent = tsk->real_parent; bc505a478d3fff Oleg Nesterov 2005-09-06 2136 } bc505a478d3fff Oleg Nesterov 2005-09-06 2137 faf1f22b61f271 Eric W. Biederman 2018-01-05 2138 clear_siginfo(&info); ^1da177e4c3f41 Linus Torvalds 2005-04-16 2139 info.si_signo = SIGCHLD; ^1da177e4c3f41 Linus Torvalds 2005-04-16 2140 info.si_errno = 0; b488893a390edf Pavel Emelyanov 2007-10-18 2141 /* 5aba085ededa6c Randy Dunlap 2011-04-04 2142 * see comment in do_notify_parent() about the following 4 lines b488893a390edf Pavel Emelyanov 2007-10-18 2143 */ b488893a390edf Pavel Emelyanov 2007-10-18 2144 rcu_read_lock(); 17cf22c33e1f1b Eric W. Biederman 2010-03-02 2145 info.si_pid = task_pid_nr_ns(tsk, task_active_pid_ns(parent)); 54ba47edac9009 Eric W. Biederman 2012-03-13 2146 info.si_uid = from_kuid_munged(task_cred_xxx(parent, user_ns), task_uid(tsk)); b488893a390edf Pavel Emelyanov 2007-10-18 2147 rcu_read_unlock(); b488893a390edf Pavel Emelyanov 2007-10-18 2148 bde8285e5cf784 Frederic Weisbecker 2017-01-31 2149 task_cputime(tsk, &utime, &stime); bde8285e5cf784 Frederic Weisbecker 2017-01-31 2150 info.si_utime = nsec_to_clock_t(utime); bde8285e5cf784 Frederic Weisbecker 2017-01-31 2151 info.si_stime = nsec_to_clock_t(stime); ^1da177e4c3f41 Linus Torvalds 2005-04-16 2152 ^1da177e4c3f41 Linus Torvalds 2005-04-16 2153 info.si_code = why; ^1da177e4c3f41 Linus Torvalds 2005-04-16 2154 switch (why) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 2155 case CLD_CONTINUED: ^1da177e4c3f41 Linus Torvalds 2005-04-16 2156 info.si_status = SIGCONT; ^1da177e4c3f41 Linus Torvalds 2005-04-16 2157 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 2158 case CLD_STOPPED: ^1da177e4c3f41 Linus Torvalds 2005-04-16 2159 info.si_status = tsk->signal->group_exit_code & 0x7f; ^1da177e4c3f41 Linus Torvalds 2005-04-16 2160 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 2161 case CLD_TRAPPED: ^1da177e4c3f41 Linus Torvalds 2005-04-16 2162 info.si_status = tsk->exit_code & 0x7f; ^1da177e4c3f41 Linus Torvalds 2005-04-16 2163 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 2164 default: ^1da177e4c3f41 Linus Torvalds 2005-04-16 2165 BUG(); ^1da177e4c3f41 Linus Torvalds 2005-04-16 2166 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 2167 ^1da177e4c3f41 Linus Torvalds 2005-04-16 2168 sighand = parent->sighand; 1d8ae697c0ac6b Eric W. Biederman 2022-04-26 @2169 lock = tsk->sighand != sighand; 1d8ae697c0ac6b Eric W. Biederman 2022-04-26 2170 if (lock) 1d8ae697c0ac6b Eric W. Biederman 2022-04-26 2171 spin_lock_nested(&sighand->siglock, SINGLE_DEPTH_NESTING); ^1da177e4c3f41 Linus Torvalds 2005-04-16 2172 if (sighand->action[SIGCHLD-1].sa.sa_handler != SIG_IGN && ^1da177e4c3f41 Linus Torvalds 2005-04-16 2173 !(sighand->action[SIGCHLD-1].sa.sa_flags & SA_NOCLDSTOP)) 13adee57c025b3 Eric W. Biederman 2022-04-26 2174 send_signal_locked(SIGCHLD, &info, parent, PIDTYPE_TGID); ^1da177e4c3f41 Linus Torvalds 2005-04-16 2175 /* ^1da177e4c3f41 Linus Torvalds 2005-04-16 2176 * Even if SIGCHLD is not generated, we must wake up wait4 calls. ^1da177e4c3f41 Linus Torvalds 2005-04-16 2177 */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 2178 __wake_up_parent(tsk, parent); 1d8ae697c0ac6b Eric W. Biederman 2022-04-26 2179 if (lock) 1d8ae697c0ac6b Eric W. Biederman 2022-04-26 2180 spin_unlock(&sighand->siglock); ^1da177e4c3f41 Linus Torvalds 2005-04-16 2181 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 2182 -- 0-DAY CI Kernel Test Service https://01.org/lkp