Hi Kees, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on next-20221109] url: https://github.com/intel-lab-lkp/linux/commits/Kees-Cook/exit-Put-an-upper-limit-on-how-often-we-can-oops/20221110-040244 patch link: https://lore.kernel.org/r/20221109200050.3400857-2-keescook%40chromium.org patch subject: [PATCH v2 2/6] exit: Put an upper limit on how often we can oops config: riscv-randconfig-s053-20221113 compiler: riscv32-linux-gcc (GCC) 12.1.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-39-gce1a6720-dirty # https://github.com/intel-lab-lkp/linux/commit/3db52f787eeec7924f3c2f952ac8fdf33b70b0bf git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Kees-Cook/exit-Put-an-upper-limit-on-how-often-we-can-oops/20221110-040244 git checkout 3db52f787eeec7924f3c2f952ac8fdf33b70b0bf # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=riscv SHELL=/bin/bash If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot sparse warnings: (new ones prefixed by >>) WARNING: invalid argument to '-march': '_zihintpause' >> kernel/exit.c:82:5: sparse: sparse: undefined preprocessor identifier 'CONFIG_SYSCTL' kernel/exit.c:313:37: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *tsk @@ got struct task_struct [noderef] __rcu *real_parent @@ kernel/exit.c:313:37: sparse: expected struct task_struct *tsk kernel/exit.c:313:37: sparse: got struct task_struct [noderef] __rcu *real_parent kernel/exit.c:316:32: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *task @@ got struct task_struct [noderef] __rcu *real_parent @@ kernel/exit.c:316:32: sparse: expected struct task_struct *task kernel/exit.c:316:32: sparse: got struct task_struct [noderef] __rcu *real_parent kernel/exit.c:317:35: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *task @@ got struct task_struct [noderef] __rcu *real_parent @@ kernel/exit.c:317:35: sparse: expected struct task_struct *task kernel/exit.c:317:35: sparse: got struct task_struct [noderef] __rcu *real_parent kernel/exit.c:362:24: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct task_struct *parent @@ got struct task_struct [noderef] __rcu *real_parent @@ kernel/exit.c:362:24: sparse: expected struct task_struct *parent kernel/exit.c:362:24: sparse: got struct task_struct [noderef] __rcu *real_parent kernel/exit.c:389:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/exit.c:389:27: sparse: expected struct spinlock [usertype] *lock kernel/exit.c:389:27: sparse: got struct spinlock [noderef] __rcu * kernel/exit.c:392:29: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/exit.c:392:29: sparse: expected struct spinlock [usertype] *lock kernel/exit.c:392:29: sparse: got struct spinlock [noderef] __rcu * kernel/exit.c:616:29: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct task_struct *reaper @@ got struct task_struct [noderef] __rcu *real_parent @@ kernel/exit.c:616:29: sparse: expected struct task_struct *reaper kernel/exit.c:616:29: sparse: got struct task_struct [noderef] __rcu *real_parent kernel/exit.c:618:29: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct task_struct *reaper @@ got struct task_struct [noderef] __rcu *real_parent @@ kernel/exit.c:618:29: sparse: expected struct task_struct *reaper kernel/exit.c:618:29: sparse: got struct task_struct [noderef] __rcu *real_parent kernel/exit.c:771:45: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sighand_struct *sighand @@ got struct sighand_struct [noderef] __rcu *sighand @@ kernel/exit.c:771:45: sparse: expected struct sighand_struct *sighand kernel/exit.c:771:45: sparse: got struct sighand_struct [noderef] __rcu *sighand kernel/exit.c:976:63: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sighand_struct *const sighand @@ got struct sighand_struct [noderef] __rcu *sighand @@ kernel/exit.c:976:63: sparse: expected struct sighand_struct *const sighand kernel/exit.c:976:63: sparse: got struct sighand_struct [noderef] __rcu *sighand kernel/exit.c:1131:39: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/exit.c:1131:39: sparse: expected struct spinlock [usertype] *lock kernel/exit.c:1131:39: sparse: got struct spinlock [noderef] __rcu * kernel/exit.c:1156:41: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/exit.c:1156:41: sparse: expected struct spinlock [usertype] *lock kernel/exit.c:1156:41: sparse: got struct spinlock [noderef] __rcu * kernel/exit.c:1245:25: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/exit.c:1245:25: sparse: expected struct spinlock [usertype] *lock kernel/exit.c:1245:25: sparse: got struct spinlock [noderef] __rcu * kernel/exit.c:1260:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/exit.c:1260:27: sparse: expected struct spinlock [usertype] *lock kernel/exit.c:1260:27: sparse: got struct spinlock [noderef] __rcu * kernel/exit.c:1311:25: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/exit.c:1311:25: sparse: expected struct spinlock [usertype] *lock kernel/exit.c:1311:25: sparse: got struct spinlock [noderef] __rcu * kernel/exit.c:1314:35: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/exit.c:1314:35: sparse: expected struct spinlock [usertype] *lock kernel/exit.c:1314:35: sparse: got struct spinlock [noderef] __rcu * kernel/exit.c:1320:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/exit.c:1320:27: sparse: expected struct spinlock [usertype] *lock kernel/exit.c:1320:27: sparse: got struct spinlock [noderef] __rcu * kernel/exit.c:1501:59: sparse: sparse: incompatible types in comparison expression (different base types): kernel/exit.c:1501:59: sparse: void * kernel/exit.c:1501:59: sparse: struct task_struct [noderef] __rcu * kernel/exit.c:1517:25: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *parent @@ got struct task_struct [noderef] __rcu * @@ kernel/exit.c:1517:25: sparse: expected struct task_struct *parent kernel/exit.c:1517:25: sparse: got struct task_struct [noderef] __rcu * kernel/exit.c: note: in included file: include/linux/ptrace.h:92:40: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *p1 @@ got struct task_struct [noderef] __rcu *real_parent @@ include/linux/ptrace.h:92:40: sparse: expected struct task_struct *p1 include/linux/ptrace.h:92:40: sparse: got struct task_struct [noderef] __rcu *real_parent include/linux/ptrace.h:92:60: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct task_struct *p2 @@ got struct task_struct [noderef] __rcu *parent @@ include/linux/ptrace.h:92:60: sparse: expected struct task_struct *p2 include/linux/ptrace.h:92:60: sparse: got struct task_struct [noderef] __rcu *parent include/linux/ptrace.h:92:40: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *p1 @@ got struct task_struct [noderef] __rcu *real_parent @@ include/linux/ptrace.h:92:40: sparse: expected struct task_struct *p1 include/linux/ptrace.h:92:40: sparse: got struct task_struct [noderef] __rcu *real_parent include/linux/ptrace.h:92:60: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct task_struct *p2 @@ got struct task_struct [noderef] __rcu *parent @@ include/linux/ptrace.h:92:60: sparse: expected struct task_struct *p2 include/linux/ptrace.h:92:60: sparse: got struct task_struct [noderef] __rcu *parent kernel/exit.c: note: in included file (through include/linux/sched/signal.h, include/linux/rcuwait.h, include/linux/percpu-rwsem.h, ...): include/linux/sched/task.h:110:21: sparse: sparse: context imbalance in 'wait_task_zombie' - unexpected unlock include/linux/sched/task.h:110:21: sparse: sparse: context imbalance in 'wait_task_stopped' - unexpected unlock include/linux/sched/task.h:110:21: sparse: sparse: context imbalance in 'wait_task_continued' - unexpected unlock kernel/exit.c: note: in included file: include/linux/ptrace.h:92:40: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *p1 @@ got struct task_struct [noderef] __rcu *real_parent @@ include/linux/ptrace.h:92:40: sparse: expected struct task_struct *p1 include/linux/ptrace.h:92:40: sparse: got struct task_struct [noderef] __rcu *real_parent include/linux/ptrace.h:92:60: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct task_struct *p2 @@ got struct task_struct [noderef] __rcu *parent @@ include/linux/ptrace.h:92:60: sparse: expected struct task_struct *p2 include/linux/ptrace.h:92:60: sparse: got struct task_struct [noderef] __rcu *parent kernel/exit.c: note: in included file (through include/linux/thread_info.h, include/asm-generic/preempt.h, arch/riscv/include/generated/asm/preempt.h, ...): arch/riscv/include/asm/current.h:31:9: sparse: sparse: context imbalance in 'do_wait' - wrong count at exit vim +/CONFIG_SYSCTL +82 kernel/exit.c 81 > 82 #if CONFIG_SYSCTL 83 static struct ctl_table kern_exit_table[] = { 84 { 85 .procname = "oops_limit", 86 .data = &oops_limit, 87 .maxlen = sizeof(oops_limit), 88 .mode = 0644, 89 .proc_handler = proc_douintvec, 90 }, 91 { } 92 }; 93 -- 0-DAY CI Kernel Test Service https://01.org/lkp