All of lore.kernel.org
 help / color / mirror / Atom feed
* [paulmckrcu:dev 20/22] kernel/rcu/tree.c:2772:59: error: 'struct task_struct' has no member named 'rcu_node_entry'
@ 2026-10-10  9:43 kernel test robot
  2026-10-10 19:54 ` Paul E. McKenney
  0 siblings, 1 reply; 2+ messages in thread
From: kernel test robot @ 2026-10-10  9:43 UTC (permalink / raw)
  To: Paul E. McKenney; +Cc: oe-kbuild-all

tree:   https://github.com/paulmckrcu/linux dev
head:   96aaeadd587ee111e53032f63b93e54a8b476483
commit: 2c4925768252397b03d47704f70891ce2b47e774 [20/22] EXP rcu: Send resched_cpu() to idle CPUs having preempted RCU readers
config: s390-allnoconfig-bpf (https://download.01.org/0day-ci/archive/20261010/202610101152.pcWaETEm-lkp@intel.com/config)
compiler: s390x-linux-gnu-gcc (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20261010/202610101152.pcWaETEm-lkp@intel.com/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 <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202610101152.pcWaETEm-lkp@intel.com/

All errors (new ones prefixed by >>):

   kernel/rcu/tree.c: In function 'fqs_slow_task':
>> kernel/rcu/tree.c:2772:59: error: 'struct task_struct' has no member named 'rcu_node_entry'
    2772 |         if (task_curr(t) || READ_ONCE(rnp->gp_tasks) != &t->rcu_node_entry)
         |                                                           ^~
   In file included from ./include/linux/container_of.h:5,
                    from ./include/linux/kernel.h:22,
                    from kernel/rcu/tree.c:21:
   kernel/rcu/tree.c: In function 'force_qs_rnp':
>> ./include/linux/container_of.h:8:47: error: 'struct task_struct' has no member named 'rcu_node_entry'
       8 | #define typeof_member(T, m)     typeof(((T*)0)->m)
         |                                               ^~
   ./include/linux/build_bug.h:80:56: note: in definition of macro '__static_assert'
      80 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
         |                                                        ^~~~
   ./include/linux/container_of.h:20:9: note: in expansion of macro 'static_assert'
      20 |         static_assert(__same_type(*(ptr), typeof_member(type, member)) || \
         |         ^~~~~~~~~~~~~
   ./include/linux/container_of.h:20:23: note: in expansion of macro '__same_type'
      20 |         static_assert(__same_type(*(ptr), typeof_member(type, member)) || \
         |                       ^~~~~~~~~~~
   ./include/linux/container_of.h:20:43: note: in expansion of macro 'typeof_member'
      20 |         static_assert(__same_type(*(ptr), typeof_member(type, member)) || \
         |                                           ^~~~~~~~~~~~~
   kernel/rcu/tree.c:2823:37: note: in expansion of macro 'container_of'
    2823 |                                 t = container_of(rnp->gp_tasks, struct task_struct, rcu_node_entry);
         |                                     ^~~~~~~~~~~~
   ././include/linux/compiler_types.h:610:27: error: expression in static assertion is not an integer
     610 | #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
         |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   ./include/linux/build_bug.h:80:56: note: in definition of macro '__static_assert'
      80 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
         |                                                        ^~~~
   ./include/linux/container_of.h:20:9: note: in expansion of macro 'static_assert'
      20 |         static_assert(__same_type(*(ptr), typeof_member(type, member)) || \
         |         ^~~~~~~~~~~~~
   ./include/linux/container_of.h:20:23: note: in expansion of macro '__same_type'
      20 |         static_assert(__same_type(*(ptr), typeof_member(type, member)) || \
         |                       ^~~~~~~~~~~
   kernel/rcu/tree.c:2823:37: note: in expansion of macro 'container_of'
    2823 |                                 t = container_of(rnp->gp_tasks, struct task_struct, rcu_node_entry);
         |                                     ^~~~~~~~~~~~
   In file included from ./include/uapi/linux/posix_types.h:5,
                    from ./include/uapi/linux/types.h:14,
                    from ./include/linux/types.h:5,
                    from kernel/rcu/tree.c:20:
>> ./include/linux/stddef.h:16:33: error: 'struct task_struct' has no member named 'rcu_node_entry'
      16 | #define offsetof(TYPE, MEMBER)  __builtin_offsetof(TYPE, MEMBER)
         |                                 ^~~~~~~~~~~~~~~~~~
   ./include/linux/container_of.h:23:34: note: in expansion of macro 'offsetof'
      23 |         (type *)((void *)(ptr) - offsetof(type, member)); })
         |                                  ^~~~~~~~
   kernel/rcu/tree.c:2823:37: note: in expansion of macro 'container_of'
    2823 |                                 t = container_of(rnp->gp_tasks, struct task_struct, rcu_node_entry);
         |                                     ^~~~~~~~~~~~


vim +2772 kernel/rcu/tree.c

  2757	
  2758	// Check to see if a task holding up the current grace period is
  2759	// preempted but runnable on an idle CPU.  This involves an
  2760	// rcu_node structure, a pointer to which is passed to fqs_slow_task()
  2761	// as a callback from task_call_func().  The fqs_slow_task()
  2762	// function returns the CPU to pass to resched_cpu() or -1 if
  2763	// there is no need for an additional call to resched_cpu().
  2764	static int fqs_slow_task(struct task_struct *t, void *arg)
  2765	{
  2766		int cpu;
  2767		struct rcu_node *rnp = arg;
  2768		struct task_struct *tc;
  2769	
  2770		// If the task is running or is no longer blocking the current
  2771		// grace period, there should be no call to resched_cpu().
> 2772		if (task_curr(t) || READ_ONCE(rnp->gp_tasks) != &t->rcu_node_entry)
  2773			return -1;
  2774	
  2775		// If the target CPU is not idle, there should be no call to
  2776		// resched_cpu().
  2777		WARN_ON_ONCE(1); // @@@
  2778		cpu = task_cpu(t);
  2779		tc = rcu_cpu_curr(cpu);
  2780		if (!is_idle_task(tc))
  2781			return -1;
  2782	
  2783		// But the target CPU is idle, so resched_cpu() it is!
  2784		WARN_ON_ONCE(1); // @@@
  2785		return cpu;
  2786	}
  2787	

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-10-10 19:54 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-10  9:43 [paulmckrcu:dev 20/22] kernel/rcu/tree.c:2772:59: error: 'struct task_struct' has no member named 'rcu_node_entry' kernel test robot
2026-10-10 19:54 ` Paul E. McKenney

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.