[paulmckrcu:non-rcu/next 39/40] include/linux/hrtimer.h:355:16: sparse: sparse: incorrect type in return expression (different modifiers)

kernel test robot <[email protected]>
Newsgroups dev.linux.lists.oe-kbuild-all
Message-ID <[email protected]>
tree:   https://github.com/paulmckrcu/linux non-rcu/next
head:   e39a12053df0951120ff6283177e0d5179feda45
commit: c3d1cae06fc1ad9b6948fa0ca8a93415607ea8b1 [39/40] hrtimer: Mark the hrtimer_sleeper structure's ->task field __private
config: arc-randconfig-r132-20260813 (https://download.01.org/0day-ci/archive/20260813/[email protected]/config)
compiler: arc-linux-gcc (GCC) 13.4.0
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260813/[email protected]/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
| Reported-by: kernel test robot <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/

sparse warnings: (new ones prefixed by >>)
   kernel/time/sleep_timeout.c: note: in included file (through include/linux/alarmtimer.h, include/linux/posix-timers.h, include/linux/sched/signal.h):
>> include/linux/hrtimer.h:355:16: sparse: sparse: incorrect type in return expression (different modifiers) @@     expected struct task_struct * @@     got struct task_struct [noderef] * @@
   include/linux/hrtimer.h:355:16: sparse:     expected struct task_struct *
   include/linux/hrtimer.h:355:16: sparse:     got struct task_struct [noderef] *
>> include/linux/hrtimer.h:355:16: sparse: sparse: incorrect type in return expression (different modifiers) @@     expected struct task_struct * @@     got struct task_struct [noderef] * @@
   include/linux/hrtimer.h:355:16: sparse:     expected struct task_struct *
   include/linux/hrtimer.h:355:16: sparse:     got struct task_struct [noderef] *
--
   kernel/time/hrtimer.c: note: in included file:
>> include/linux/hrtimer.h:355:16: sparse: sparse: incorrect type in return expression (different modifiers) @@     expected struct task_struct * @@     got struct task_struct [noderef] * @@
   include/linux/hrtimer.h:355:16: sparse:     expected struct task_struct *
   include/linux/hrtimer.h:355:16: sparse:     got struct task_struct [noderef] *
>> include/linux/hrtimer.h:359:9: sparse: sparse: incorrect type in assignment (different modifiers) @@     expected struct task_struct [noderef] *volatile @@     got struct task_struct *t @@
   include/linux/hrtimer.h:359:9: sparse:     expected struct task_struct [noderef] *volatile
   include/linux/hrtimer.h:359:9: sparse:     got struct task_struct *t
>> include/linux/hrtimer.h:359:9: sparse: sparse: incorrect type in assignment (different modifiers) @@     expected struct task_struct [noderef] *volatile @@     got struct task_struct *t @@
   include/linux/hrtimer.h:359:9: sparse:     expected struct task_struct [noderef] *volatile
   include/linux/hrtimer.h:359:9: sparse:     got struct task_struct *t
>> include/linux/hrtimer.h:359:9: sparse: sparse: incorrect type in assignment (different modifiers) @@     expected struct task_struct [noderef] *volatile @@     got struct task_struct *t @@
   include/linux/hrtimer.h:359:9: sparse:     expected struct task_struct [noderef] *volatile
   include/linux/hrtimer.h:359:9: sparse:     got struct task_struct *t
>> include/linux/hrtimer.h:355:16: sparse: sparse: incorrect type in return expression (different modifiers) @@     expected struct task_struct * @@     got struct task_struct [noderef] * @@
   include/linux/hrtimer.h:355:16: sparse:     expected struct task_struct *
   include/linux/hrtimer.h:355:16: sparse:     got struct task_struct [noderef] *
>> include/linux/hrtimer.h:355:16: sparse: sparse: incorrect type in return expression (different modifiers) @@     expected struct task_struct * @@     got struct task_struct [noderef] * @@
   include/linux/hrtimer.h:355:16: sparse:     expected struct task_struct *
   include/linux/hrtimer.h:355:16: sparse:     got struct task_struct [noderef] *
>> include/linux/hrtimer.h:355:16: sparse: sparse: incorrect type in return expression (different modifiers) @@     expected struct task_struct * @@     got struct task_struct [noderef] * @@
   include/linux/hrtimer.h:355:16: sparse:     expected struct task_struct *
   include/linux/hrtimer.h:355:16: sparse:     got struct task_struct [noderef] *

vim +355 include/linux/hrtimer.h

   341	
   342	extern int nanosleep_copyout(struct restart_block *, struct timespec64 *);
   343	extern long hrtimer_nanosleep(ktime_t rqtp, const enum hrtimer_mode mode,
   344				      const clockid_t clockid);
   345	
   346	extern int schedule_hrtimeout_range(ktime_t *expires, u64 delta,
   347					    const enum hrtimer_mode mode);
   348	extern int schedule_hrtimeout_range_clock(ktime_t *expires,
   349						  u64 delta,
   350						  const enum hrtimer_mode mode,
   351						  clockid_t clock_id);
   352	extern int schedule_hrtimeout(ktime_t *expires, const enum hrtimer_mode mode);
   353	static inline struct task_struct *hrtimer_sleeper_task_get(struct hrtimer_sleeper *sl)
   354	{
 > 355		return READ_ONCE(ACCESS_PRIVATE(sl, task));
   356	}
   357	static inline void hrtimer_sleeper_task_set(struct hrtimer_sleeper *sl, struct task_struct *t)
   358	{
 > 359		WRITE_ONCE(ACCESS_PRIVATE(sl, task), t);
   360	}
   361	

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.