diff options
author | Tejun Heo <tj@kernel.org> | 2010-02-16 10:20:26 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-02-17 02:05:38 -0500 |
commit | 7d720c3e4f0c4fc152a6bf17e24244a3c85412d2 (patch) | |
tree | 36e037187ce79acb211702bea22e99c625787757 /net/xfrm/xfrm_policy.c | |
parent | 2bb4646fce8d09916b351d1a62f98db7cec6fc41 (diff) |
percpu: add __percpu sparse annotations to net
Add __percpu sparse annotations to net.
These annotations are to make sparse consider percpu variables to be
in a different address space and warn if accessed without going
through percpu accessors. This patch doesn't affect normal builds.
The macro and type tricks around snmp stats make things a bit
interesting. DEFINE/DECLARE_SNMP_STAT() macros mark the target field
as __percpu and SNMP_UPD_PO_STATS() macro is updated accordingly. All
snmp_mib_*() users which used to cast the argument to (void **) are
updated to cast it to (void __percpu **).
Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: David S. Miller <davem@davemloft.net>
Cc: Patrick McHardy <kaber@trash.net>
Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Cc: Vlad Yasevich <vladislav.yasevich@hp.com>
Cc: netdev@vger.kernel.org
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/xfrm/xfrm_policy.c')
-rw-r--r-- | net/xfrm/xfrm_policy.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c index eb870fcc29cc..cfceb6616ec1 100644 --- a/net/xfrm/xfrm_policy.c +++ b/net/xfrm/xfrm_policy.c | |||
@@ -2428,19 +2428,19 @@ static int __net_init xfrm_statistics_init(struct net *net) | |||
2428 | { | 2428 | { |
2429 | int rv; | 2429 | int rv; |
2430 | 2430 | ||
2431 | if (snmp_mib_init((void **)net->mib.xfrm_statistics, | 2431 | if (snmp_mib_init((void __percpu **)net->mib.xfrm_statistics, |
2432 | sizeof(struct linux_xfrm_mib)) < 0) | 2432 | sizeof(struct linux_xfrm_mib)) < 0) |
2433 | return -ENOMEM; | 2433 | return -ENOMEM; |
2434 | rv = xfrm_proc_init(net); | 2434 | rv = xfrm_proc_init(net); |
2435 | if (rv < 0) | 2435 | if (rv < 0) |
2436 | snmp_mib_free((void **)net->mib.xfrm_statistics); | 2436 | snmp_mib_free((void __percpu **)net->mib.xfrm_statistics); |
2437 | return rv; | 2437 | return rv; |
2438 | } | 2438 | } |
2439 | 2439 | ||
2440 | static void xfrm_statistics_fini(struct net *net) | 2440 | static void xfrm_statistics_fini(struct net *net) |
2441 | { | 2441 | { |
2442 | xfrm_proc_fini(net); | 2442 | xfrm_proc_fini(net); |
2443 | snmp_mib_free((void **)net->mib.xfrm_statistics); | 2443 | snmp_mib_free((void __percpu **)net->mib.xfrm_statistics); |
2444 | } | 2444 | } |
2445 | #else | 2445 | #else |
2446 | static int __net_init xfrm_statistics_init(struct net *net) | 2446 | static int __net_init xfrm_statistics_init(struct net *net) |