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/sctp | |
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/sctp')
-rw-r--r-- | net/sctp/proc.c | 2 | ||||
-rw-r--r-- | net/sctp/protocol.c | 5 |
2 files changed, 4 insertions, 3 deletions
diff --git a/net/sctp/proc.c b/net/sctp/proc.c index a5ac6e0a8d9c..784bcc9a979d 100644 --- a/net/sctp/proc.c +++ b/net/sctp/proc.c | |||
@@ -83,7 +83,7 @@ static int sctp_snmp_seq_show(struct seq_file *seq, void *v) | |||
83 | 83 | ||
84 | for (i = 0; sctp_snmp_list[i].name != NULL; i++) | 84 | for (i = 0; sctp_snmp_list[i].name != NULL; i++) |
85 | seq_printf(seq, "%-32s\t%ld\n", sctp_snmp_list[i].name, | 85 | seq_printf(seq, "%-32s\t%ld\n", sctp_snmp_list[i].name, |
86 | snmp_fold_field((void **)sctp_statistics, | 86 | snmp_fold_field((void __percpu **)sctp_statistics, |
87 | sctp_snmp_list[i].entry)); | 87 | sctp_snmp_list[i].entry)); |
88 | 88 | ||
89 | return 0; | 89 | return 0; |
diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c index a3c8988758b1..9687177b026b 100644 --- a/net/sctp/protocol.c +++ b/net/sctp/protocol.c | |||
@@ -996,12 +996,13 @@ int sctp_register_pf(struct sctp_pf *pf, sa_family_t family) | |||
996 | 996 | ||
997 | static inline int init_sctp_mibs(void) | 997 | static inline int init_sctp_mibs(void) |
998 | { | 998 | { |
999 | return snmp_mib_init((void**)sctp_statistics, sizeof(struct sctp_mib)); | 999 | return snmp_mib_init((void __percpu **)sctp_statistics, |
1000 | sizeof(struct sctp_mib)); | ||
1000 | } | 1001 | } |
1001 | 1002 | ||
1002 | static inline void cleanup_sctp_mibs(void) | 1003 | static inline void cleanup_sctp_mibs(void) |
1003 | { | 1004 | { |
1004 | snmp_mib_free((void**)sctp_statistics); | 1005 | snmp_mib_free((void __percpu **)sctp_statistics); |
1005 | } | 1006 | } |
1006 | 1007 | ||
1007 | static void sctp_v4_pf_init(void) | 1008 | static void sctp_v4_pf_init(void) |