kernel/trace/rv/monitors/deadline/deadline.h:115:46: sparse: sparse: incorrect type in argument 1 (different address spaces)
From: kernel test robot
Date: Mon May 18 2026 - 23:17:56 EST
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 4d3a2a466b8d68d852a1f3bbf11204b718428dc4
commit: b133207deb72609ad4da40c4d50128a5e150677b rv: Add nomiss deadline monitor
date: 7 weeks ago
config: loongarch-randconfig-r111-20260519 (https://download.01.org/0day-ci/archive/20260519/202605191116.acPXYOW4-lkp@xxxxxxxxx/config)
compiler: clang version 18.1.8 (https://github.com/llvm/llvm-project 3b5b5c1ec4a3095ab096dd780e84d7ab81f3d7ff)
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260519/202605191116.acPXYOW4-lkp@xxxxxxxxx/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Fixes: b133207deb72 ("rv: Add nomiss deadline monitor")
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202605191116.acPXYOW4-lkp@xxxxxxxxx/
sparse warnings: (new ones prefixed by >>)
kernel/trace/rv/monitors/nomiss/nomiss.c: note: in included file:
>> kernel/trace/rv/monitors/deadline/deadline.h:115:46: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *dst @@ got struct sched_attr [noderef] __user * @@
kernel/trace/rv/monitors/deadline/deadline.h:115:46: sparse: expected void *dst
kernel/trace/rv/monitors/deadline/deadline.h:115:46: sparse: got struct sched_attr [noderef] __user *
>> kernel/trace/rv/monitors/deadline/deadline.h:118:21: sparse: sparse: dereference of noderef expression
kernel/trace/rv/monitors/deadline/deadline.h:120:30: sparse: sparse: dereference of noderef expression
vim +115 kernel/trace/rv/monitors/deadline/deadline.h
94
95 static inline int extract_params(struct pt_regs *regs, long id, pid_t *pid_out)
96 {
97 size_t size = offsetofend(struct sched_attr, sched_flags);
98 struct sched_attr __user *uattr, attr;
99 int new_policy = -1, ret;
100 unsigned long args[6];
101
102 switch (id) {
103 case __NR_sched_setscheduler:
104 syscall_get_arguments(current, regs, args);
105 *pid_out = args[0];
106 new_policy = args[1];
107 break;
108 case __NR_sched_setattr:
109 syscall_get_arguments(current, regs, args);
110 *pid_out = args[0];
111 uattr = (struct sched_attr __user *)args[1];
112 /*
113 * Just copy up to sched_flags, we are not interested after that
114 */
> 115 ret = copy_struct_from_user(&attr, size, uattr, size);
116 if (ret)
117 return ret;
> 118 if (attr.sched_flags & SCHED_FLAG_KEEP_POLICY)
119 return -EINVAL;
120 new_policy = attr.sched_policy;
121 break;
122 default:
123 return -EINVAL;
124 }
125
126 return new_policy & ~SCHED_RESET_ON_FORK;
127 }
128
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki