]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
xfrm: add rcu_access_pointer to silence sparse warning for xfrm_input_afinfo
authorSabrina Dubroca <sd@queasysnail.net>
Mon, 9 Mar 2026 10:32:42 +0000 (11:32 +0100)
committerSteffen Klassert <steffen.klassert@secunet.com>
Thu, 12 Mar 2026 06:15:57 +0000 (07:15 +0100)
xfrm_input_afinfo is __rcu, we should use rcu_access_pointer to avoid
a sparse warning:
net/xfrm/xfrm_input.c:78:21: error: incompatible types in comparison expression (different address spaces):
net/xfrm/xfrm_input.c:78:21:    struct xfrm_input_afinfo const [noderef] __rcu *
net/xfrm/xfrm_input.c:78:21:    struct xfrm_input_afinfo const *

Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
net/xfrm/xfrm_input.c

index 4ed346e682c7ebe0b1c6b5e56157112dba4343e2..dc1312ed5a095574c6d94463c8d93d52fa464091 100644 (file)
@@ -75,7 +75,10 @@ int xfrm_input_unregister_afinfo(const struct xfrm_input_afinfo *afinfo)
 
        spin_lock_bh(&xfrm_input_afinfo_lock);
        if (likely(xfrm_input_afinfo[afinfo->is_ipip][afinfo->family])) {
-               if (unlikely(xfrm_input_afinfo[afinfo->is_ipip][afinfo->family] != afinfo))
+               const struct xfrm_input_afinfo *cur;
+
+               cur = rcu_access_pointer(xfrm_input_afinfo[afinfo->is_ipip][afinfo->family]);
+               if (unlikely(cur != afinfo))
                        err = -EINVAL;
                else
                        RCU_INIT_POINTER(xfrm_input_afinfo[afinfo->is_ipip][afinfo->family], NULL);