]> www.infradead.org Git - users/hch/configfs.git/commitdiff
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)
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

index ef174d8c1f63913ab8fabfa647571effc28cf5d6..e7b005ff375033f1bf7e67ac6b69f08bd3a888bb 100644 (file)
@@ -377,7 +377,7 @@ struct workqueue_struct {
 
        /* hot fields used during command issue, aligned to cacheline */
        unsigned int            flags ____cacheline_aligned; /* WQ: WQ_* flags */
-       struct pool_workqueue __percpu __rcu **cpu_pwq; /* I: per-cpu pwqs */
+       struct pool_workqueue __rcu * __percpu *cpu_pwq; /* I: per-cpu pwqs */
        struct wq_node_nr_active *node_nr_active[]; /* I: per-node nr_active */
 };