[PATCH] hwspinlock: fix warning from sparse

Antonio Borneo posted 1 patch 1 week, 4 days ago
drivers/hwspinlock/hwspinlock_core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] hwspinlock: fix warning from sparse
Posted by Antonio Borneo 1 week, 4 days ago
Sparse triggers the following warnings:

drivers/hwspinlock/hwspinlock_core.c:392:9: warning: incorrect type in assignment (different address spaces)
drivers/hwspinlock/hwspinlock_core.c:392:9:    expected void **slot
drivers/hwspinlock/hwspinlock_core.c:392:9:    got void [noderef] __rcu **
drivers/hwspinlock/hwspinlock_core.c:392:9: warning: incorrect type in assignment (different address spaces)
drivers/hwspinlock/hwspinlock_core.c:392:9:    expected void **slot
drivers/hwspinlock/hwspinlock_core.c:392:9:    got void [noderef] __rcu **
drivers/hwspinlock/hwspinlock_core.c:393:48: warning: incorrect type in argument 1 (different address spaces)
drivers/hwspinlock/hwspinlock_core.c:393:48:    expected void [noderef] __rcu **slot
drivers/hwspinlock/hwspinlock_core.c:393:48:    got void **slot
drivers/hwspinlock/hwspinlock_core.c:397:30: warning: incorrect type in assignment (different address spaces)
drivers/hwspinlock/hwspinlock_core.c:397:30:    expected void **slot
drivers/hwspinlock/hwspinlock_core.c:397:30:    got void [noderef] __rcu **
drivers/hwspinlock/hwspinlock_core.c:392:9: warning: incorrect type in argument 1 (different address spaces)
drivers/hwspinlock/hwspinlock_core.c:392:9:    expected void [noderef] __rcu **slot
drivers/hwspinlock/hwspinlock_core.c:392:9:    got void **slot
drivers/hwspinlock/hwspinlock_core.c:392:9: warning: incorrect type in assignment (different address spaces)
drivers/hwspinlock/hwspinlock_core.c:392:9:    expected void **slot
drivers/hwspinlock/hwspinlock_core.c:392:9:    got void [noderef] __rcu **

all linked to the same missing '__rcu' at declaration of 'slot'.

Fix it!

Signed-off-by: Antonio Borneo <antonio.borneo@foss.st.com>
---
 drivers/hwspinlock/hwspinlock_core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/hwspinlock/hwspinlock_core.c b/drivers/hwspinlock/hwspinlock_core.c
index cc8e952a67727..50a875b2353f8 100644
--- a/drivers/hwspinlock/hwspinlock_core.c
+++ b/drivers/hwspinlock/hwspinlock_core.c
@@ -372,7 +372,7 @@ int of_hwspin_lock_get_id(struct device_node *np, int index)
 	struct of_phandle_args args;
 	struct hwspinlock *hwlock;
 	struct radix_tree_iter iter;
-	void **slot;
+	void __rcu **slot;
 	int id;
 	int ret;
 

base-commit: c369299895a591d96745d6492d4888259b004a9e
-- 
2.34.1
Re: [PATCH] hwspinlock: fix warning from sparse
Posted by Antonio Borneo 1 week, 2 days ago
On Mon, 2026-03-23 at 11:22 +0100, Antonio Borneo wrote:
> Sparse triggers the following warnings:
> 
> drivers/hwspinlock/hwspinlock_core.c:392:9: warning: incorrect type in assignment (different address spaces)
> drivers/hwspinlock/hwspinlock_core.c:392:9:    expected void **slot
> drivers/hwspinlock/hwspinlock_core.c:392:9:    got void [noderef] __rcu **
> drivers/hwspinlock/hwspinlock_core.c:392:9: warning: incorrect type in assignment (different address spaces)
> drivers/hwspinlock/hwspinlock_core.c:392:9:    expected void **slot
> drivers/hwspinlock/hwspinlock_core.c:392:9:    got void [noderef] __rcu **
> drivers/hwspinlock/hwspinlock_core.c:393:48: warning: incorrect type in argument 1 (different address spaces)
> drivers/hwspinlock/hwspinlock_core.c:393:48:    expected void [noderef] __rcu **slot
> drivers/hwspinlock/hwspinlock_core.c:393:48:    got void **slot
> drivers/hwspinlock/hwspinlock_core.c:397:30: warning: incorrect type in assignment (different address spaces)
> drivers/hwspinlock/hwspinlock_core.c:397:30:    expected void **slot
> drivers/hwspinlock/hwspinlock_core.c:397:30:    got void [noderef] __rcu **
> drivers/hwspinlock/hwspinlock_core.c:392:9: warning: incorrect type in argument 1 (different address spaces)
> drivers/hwspinlock/hwspinlock_core.c:392:9:    expected void [noderef] __rcu **slot
> drivers/hwspinlock/hwspinlock_core.c:392:9:    got void **slot
> drivers/hwspinlock/hwspinlock_core.c:392:9: warning: incorrect type in assignment (different address spaces)
> drivers/hwspinlock/hwspinlock_core.c:392:9:    expected void **slot
> drivers/hwspinlock/hwspinlock_core.c:392:9:    got void [noderef] __rcu **
> 
> all linked to the same missing '__rcu' at declaration of 'slot'.
> 
> Fix it!
> 
> Signed-off-by: Antonio Borneo <antonio.borneo@foss.st.com>
> ---
>  drivers/hwspinlock/hwspinlock_core.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/hwspinlock/hwspinlock_core.c b/drivers/hwspinlock/hwspinlock_core.c
> index cc8e952a67727..50a875b2353f8 100644
> --- a/drivers/hwspinlock/hwspinlock_core.c
> +++ b/drivers/hwspinlock/hwspinlock_core.c
> @@ -372,7 +372,7 @@ int of_hwspin_lock_get_id(struct device_node *np, int index)
>         struct of_phandle_args args;
>         struct hwspinlock *hwlock;
>         struct radix_tree_iter iter;
> -       void **slot;
> +       void __rcu **slot;

Please ignore this patch.

While it fixes a minor warning from sparse, the analysis in
http://sashiko.dev/#/patchset/20260323102210.228551-1-antonio.borneo%40foss.st.com
highlights a race if provider is unbind, plus I see another race between provider and consumer on async probe.

I'm checking to fix such races, addressing at the same time the warning from sparse.
Merging this patch now will only create unnecessary dependency for backporting in stable.

Regards,
Antonio