Re: [rcu:dev.2019.04.16a 38/72] kernel/rcu/tree.c:2408:36: sparse: sparse: incorrect type in initializer (different address spaces)

From: Sebastian Andrzej Siewior
Date: Tue Apr 23 2019 - 11:08:26 EST


On 2019-04-23 05:46:19 [-0700], Paul E. McKenney wrote:
> On Tue, Apr 23, 2019 at 06:33:33PM +0800, kbuild test robot wrote:
> > tree: https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git dev.2019.04.16a
> > head: ca8714f549be5a186d086a223184095759eb7094
> > commit: 9a1a31194644dfc6b8f19755ea44ecf84f37cf40 [38/72] rcu: Enable elimination of Tree-RCU softirq processing
> > reproduce:
> > # apt-get install sparse
> > git checkout 9a1a31194644dfc6b8f19755ea44ecf84f37cf40
> > make ARCH=x86_64 allmodconfig
> > make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
> >
> > If you fix the issue, kindly add following tag
> > Reported-by: kbuild test robot <lkp@xxxxxxxxx>
> >
> >
> >
> > sparse warnings: (new ones prefixed by >>)
> >
> > >> kernel/rcu/tree.c:2408:36: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct [noderef] <asn:3> **store @@ got struct task_struct [noderef] <asn:3> **store @@
>
> Line 2408 of kernel/rcu/tree.c for commit 9a1a31194644 ("rcu: Enable
> elimination of Tree-RCU softirq processing") is this:
>
> .store = &rcu_data.rcu_cpu_kthread_task,
>
> So I am having some difficulty understanding this sparse diagnostic.
>
> Help?

this helps

diff --git a/include/linux/smpboot.h b/include/linux/smpboot.h
index d0884b5250010..c2678e29807c1 100644
--- a/include/linux/smpboot.h
+++ b/include/linux/smpboot.h
@@ -29,7 +29,7 @@ struct smpboot_thread_data;
* @thread_comm: The base name of the thread
*/
struct smp_hotplug_thread {
- struct task_struct __percpu **store;
+ struct task_struct *__percpu *store;
struct list_head list;
int (*thread_should_run)(unsigned int cpu);
void (*thread_fn)(unsigned int cpu);


I just need to find the correct words for it.
And yes, it is not RCU relatedâ

> Thanx, Paul

Sebastian