diff mbox

[net-next] net: fix sparse warnings in SNMP_UPD_PO_STATS(_BH)

Message ID 20140917212312.GA13866@kria
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Sabrina Dubroca Sept. 17, 2014, 9:23 p.m. UTC
ptr used to be a non __percpu pointer (result of a this_cpu_ptr
assignment, 7d720c3e4f0c4 ("percpu: add __percpu sparse annotations to
net")). Since d25398df59b56 ("net: avoid reloads in SNMP_UPD_PO_STATS"),
that's no longer the case, SNMP_UPD_PO_STATS uses this_cpu_add and ptr
is now __percpu.

Silence sparse warnings by preserving the original type and
annotation, and remove the out-of-date comment.

warning: incorrect type in initializer (different address spaces)
   expected unsigned long long *ptr
   got unsigned long long [noderef] <asn:3>*<noident>
warning: incorrect type in initializer (different address spaces)
   expected void const [noderef] <asn:3>*__vpp_verify
   got unsigned long long *<noident>
warning: incorrect type in initializer (different address spaces)
   expected void const [noderef] <asn:3>*__vpp_verify
   got unsigned long long *<noident>

Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
---
 include/net/snmp.h | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

Comments

Hannes Frederic Sowa Sept. 17, 2014, 10:43 p.m. UTC | #1
On Wed, Sep 17, 2014, at 23:23, Sabrina Dubroca wrote:
> ptr used to be a non __percpu pointer (result of a this_cpu_ptr
> assignment, 7d720c3e4f0c4 ("percpu: add __percpu sparse annotations to
> net")). Since d25398df59b56 ("net: avoid reloads in SNMP_UPD_PO_STATS"),
> that's no longer the case, SNMP_UPD_PO_STATS uses this_cpu_add and ptr
> is now __percpu.
> 
> Silence sparse warnings by preserving the original type and
> annotation, and remove the out-of-date comment.
> 
> warning: incorrect type in initializer (different address spaces)
>    expected unsigned long long *ptr
>    got unsigned long long [noderef] <asn:3>*<noident>
> warning: incorrect type in initializer (different address spaces)
>    expected void const [noderef] <asn:3>*__vpp_verify
>    got unsigned long long *<noident>
> warning: incorrect type in initializer (different address spaces)
>    expected void const [noderef] <asn:3>*__vpp_verify
>    got unsigned long long *<noident>
> 
> Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>

Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>

This clears up quite a lot of warnings in ipv6/mcast.c.

Thanks,
Hannes
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller Sept. 19, 2014, 9:22 p.m. UTC | #2
From: Sabrina Dubroca <sd@queasysnail.net>
Date: Wed, 17 Sep 2014 23:23:12 +0200

> ptr used to be a non __percpu pointer (result of a this_cpu_ptr
> assignment, 7d720c3e4f0c4 ("percpu: add __percpu sparse annotations to
> net")). Since d25398df59b56 ("net: avoid reloads in SNMP_UPD_PO_STATS"),
> that's no longer the case, SNMP_UPD_PO_STATS uses this_cpu_add and ptr
> is now __percpu.
> 
> Silence sparse warnings by preserving the original type and
> annotation, and remove the out-of-date comment.
> 
> warning: incorrect type in initializer (different address spaces)
>    expected unsigned long long *ptr
>    got unsigned long long [noderef] <asn:3>*<noident>
> warning: incorrect type in initializer (different address spaces)
>    expected void const [noderef] <asn:3>*__vpp_verify
>    got unsigned long long *<noident>
> warning: incorrect type in initializer (different address spaces)
>    expected void const [noderef] <asn:3>*__vpp_verify
>    got unsigned long long *<noident>
> 
> Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>

Applied, thanks.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/include/net/snmp.h b/include/net/snmp.h
index f1f27fdbb0d5..8fd2f498782e 100644
--- a/include/net/snmp.h
+++ b/include/net/snmp.h
@@ -146,19 +146,15 @@  struct linux_xfrm_mib {
 
 #define SNMP_ADD_STATS(mib, field, addend)	\
 			this_cpu_add(mib->mibs[field], addend)
-/*
- * Use "__typeof__(*mib) *ptr" instead of "__typeof__(mib) ptr"
- * to make @ptr a non-percpu pointer.
- */
 #define SNMP_UPD_PO_STATS(mib, basefield, addend)	\
 	do { \
-		__typeof__(*mib->mibs) *ptr = mib->mibs;	\
+		__typeof__((mib->mibs) + 0) ptr = mib->mibs;	\
 		this_cpu_inc(ptr[basefield##PKTS]);		\
 		this_cpu_add(ptr[basefield##OCTETS], addend);	\
 	} while (0)
 #define SNMP_UPD_PO_STATS_BH(mib, basefield, addend)	\
 	do { \
-		__typeof__(*mib->mibs) *ptr = mib->mibs;	\
+		__typeof__((mib->mibs) + 0) ptr = mib->mibs;	\
 		__this_cpu_inc(ptr[basefield##PKTS]);		\
 		__this_cpu_add(ptr[basefield##OCTETS], addend);	\
 	} while (0)