workqueue: Correct declaration of cpu_pwq in struct workqueue_struct
authorUros Bizjak <ubizjak@gmail.com>
Mon, 5 Aug 2024 07:30:29 +0000 (09:30 +0200)
committerTejun Heo <tj@kernel.org>
Tue, 6 Aug 2024 04:34:02 +0000 (18:34 -1000)
commitc4c8f369b6a6d21ce27286de1501137771e01dc3
treec89d9c6d5185c21e602c8325494a0acbfe8e9466
parent8bc35475ef1a23b0e224f3242eb11c76cab0ea88
workqueue: Correct declaration of cpu_pwq in struct workqueue_struct

cpu_pwq is used in various percpu functions that expect variable in
__percpu address space. Correct the declaration of cpu_pwq to

struct pool_workqueue __rcu * __percpu *cpu_pwq

to declare the variable as __percpu pointer.

The patch also fixes following sparse errors:

workqueue.c:380:37: warning: duplicate [noderef]
workqueue.c:380:37: error: multiple address spaces given: __rcu & __percpu
workqueue.c:2271:15: error: incompatible types in comparison expression (different address spaces):
workqueue.c:2271:15:    struct pool_workqueue [noderef] __rcu *
workqueue.c:2271:15:    struct pool_workqueue [noderef] __percpu *

and uncovers a couple of exisiting "incorrect type in assignment"
warnings (from __rcu address space), which this patch does not address.

Found by GCC's named address space checks.

There were no changes in the resulting object files.

Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
Cc: Tejun Heo <tj@kernel.org>
Cc: Lai Jiangshan <jiangshanlai@gmail.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
kernel/workqueue.c