diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-21 15:54:12 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-21 15:54:12 -0400 |
commit | 888a6f77e0418b049f83d37547c209b904d30af4 (patch) | |
tree | 42cdb9f781d2177e6b380e69a66a27ec7705f51f /net | |
parent | 31b7eab27a314b153d8fa07ba9e9ec00a98141e1 (diff) | |
parent | 6506cf6ce68d78a5470a8360c965dafe8e4b78e3 (diff) |
Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (52 commits)
sched: fix RCU lockdep splat from task_group()
rcu: using ACCESS_ONCE() to observe the jiffies_stall/rnp->qsmask value
sched: suppress RCU lockdep splat in task_fork_fair
net: suppress RCU lockdep false positive in sock_update_classid
rcu: move check from rcu_dereference_bh to rcu_read_lock_bh_held
rcu: Add advice to PROVE_RCU_REPEATEDLY kernel config parameter
rcu: Add tracing data to support queueing models
rcu: fix sparse errors in rcutorture.c
rcu: only one evaluation of arg in rcu_dereference_check() unless sparse
kernel: Remove undead ifdef CONFIG_DEBUG_LOCK_ALLOC
rcu: fix _oddness handling of verbose stall warnings
rcu: performance fixes to TINY_PREEMPT_RCU callback checking
rcu: upgrade stallwarn.txt documentation for CPU-bound RT processes
vhost: add __rcu annotations
rcu: add comment stating that list_empty() applies to RCU-protected lists
rcu: apply TINY_PREEMPT_RCU read-side speedup to TREE_PREEMPT_RCU
rcu: combine duplicate code, courtesy of CONFIG_PREEMPT_RCU
rcu: Upgrade srcu_read_lock() docbook about SRCU grace periods
rcu: document ways of stalling updates in low-memory situations
rcu: repair code-duplication FIXMEs
...
Diffstat (limited to 'net')
-rw-r--r-- | net/core/sock.c | 5 | ||||
-rw-r--r-- | net/ipv4/netfilter/nf_nat_core.c | 2 | ||||
-rw-r--r-- | net/netfilter/core.c | 2 | ||||
-rw-r--r-- | net/netfilter/nf_conntrack_ecache.c | 4 | ||||
-rw-r--r-- | net/netfilter/nf_conntrack_extend.c | 2 | ||||
-rw-r--r-- | net/netfilter/nf_conntrack_proto.c | 4 | ||||
-rw-r--r-- | net/netfilter/nf_log.c | 2 | ||||
-rw-r--r-- | net/netfilter/nf_queue.c | 2 |
8 files changed, 13 insertions, 10 deletions
diff --git a/net/core/sock.c b/net/core/sock.c index ef30e9d286e7..7d99e13148e6 100644 --- a/net/core/sock.c +++ b/net/core/sock.c | |||
@@ -1078,8 +1078,11 @@ static void sk_prot_free(struct proto *prot, struct sock *sk) | |||
1078 | #ifdef CONFIG_CGROUPS | 1078 | #ifdef CONFIG_CGROUPS |
1079 | void sock_update_classid(struct sock *sk) | 1079 | void sock_update_classid(struct sock *sk) |
1080 | { | 1080 | { |
1081 | u32 classid = task_cls_classid(current); | 1081 | u32 classid; |
1082 | 1082 | ||
1083 | rcu_read_lock(); /* doing current task, which cannot vanish. */ | ||
1084 | classid = task_cls_classid(current); | ||
1085 | rcu_read_unlock(); | ||
1083 | if (classid && classid != sk->sk_classid) | 1086 | if (classid && classid != sk->sk_classid) |
1084 | sk->sk_classid = classid; | 1087 | sk->sk_classid = classid; |
1085 | } | 1088 | } |
diff --git a/net/ipv4/netfilter/nf_nat_core.c b/net/ipv4/netfilter/nf_nat_core.c index 8c8632d9b93c..957c9241fb0c 100644 --- a/net/ipv4/netfilter/nf_nat_core.c +++ b/net/ipv4/netfilter/nf_nat_core.c | |||
@@ -38,7 +38,7 @@ static DEFINE_SPINLOCK(nf_nat_lock); | |||
38 | static struct nf_conntrack_l3proto *l3proto __read_mostly; | 38 | static struct nf_conntrack_l3proto *l3proto __read_mostly; |
39 | 39 | ||
40 | #define MAX_IP_NAT_PROTO 256 | 40 | #define MAX_IP_NAT_PROTO 256 |
41 | static const struct nf_nat_protocol *nf_nat_protos[MAX_IP_NAT_PROTO] | 41 | static const struct nf_nat_protocol __rcu *nf_nat_protos[MAX_IP_NAT_PROTO] |
42 | __read_mostly; | 42 | __read_mostly; |
43 | 43 | ||
44 | static inline const struct nf_nat_protocol * | 44 | static inline const struct nf_nat_protocol * |
diff --git a/net/netfilter/core.c b/net/netfilter/core.c index 78b505d33bfb..fdaec7daff1d 100644 --- a/net/netfilter/core.c +++ b/net/netfilter/core.c | |||
@@ -27,7 +27,7 @@ | |||
27 | 27 | ||
28 | static DEFINE_MUTEX(afinfo_mutex); | 28 | static DEFINE_MUTEX(afinfo_mutex); |
29 | 29 | ||
30 | const struct nf_afinfo *nf_afinfo[NFPROTO_NUMPROTO] __read_mostly; | 30 | const struct nf_afinfo __rcu *nf_afinfo[NFPROTO_NUMPROTO] __read_mostly; |
31 | EXPORT_SYMBOL(nf_afinfo); | 31 | EXPORT_SYMBOL(nf_afinfo); |
32 | 32 | ||
33 | int nf_register_afinfo(const struct nf_afinfo *afinfo) | 33 | int nf_register_afinfo(const struct nf_afinfo *afinfo) |
diff --git a/net/netfilter/nf_conntrack_ecache.c b/net/netfilter/nf_conntrack_ecache.c index cdcc7649476b..5702de35e2bb 100644 --- a/net/netfilter/nf_conntrack_ecache.c +++ b/net/netfilter/nf_conntrack_ecache.c | |||
@@ -26,10 +26,10 @@ | |||
26 | 26 | ||
27 | static DEFINE_MUTEX(nf_ct_ecache_mutex); | 27 | static DEFINE_MUTEX(nf_ct_ecache_mutex); |
28 | 28 | ||
29 | struct nf_ct_event_notifier *nf_conntrack_event_cb __read_mostly; | 29 | struct nf_ct_event_notifier __rcu *nf_conntrack_event_cb __read_mostly; |
30 | EXPORT_SYMBOL_GPL(nf_conntrack_event_cb); | 30 | EXPORT_SYMBOL_GPL(nf_conntrack_event_cb); |
31 | 31 | ||
32 | struct nf_exp_event_notifier *nf_expect_event_cb __read_mostly; | 32 | struct nf_exp_event_notifier __rcu *nf_expect_event_cb __read_mostly; |
33 | EXPORT_SYMBOL_GPL(nf_expect_event_cb); | 33 | EXPORT_SYMBOL_GPL(nf_expect_event_cb); |
34 | 34 | ||
35 | /* deliver cached events and clear cache entry - must be called with locally | 35 | /* deliver cached events and clear cache entry - must be called with locally |
diff --git a/net/netfilter/nf_conntrack_extend.c b/net/netfilter/nf_conntrack_extend.c index 8d9e4c949b96..bd82450c193f 100644 --- a/net/netfilter/nf_conntrack_extend.c +++ b/net/netfilter/nf_conntrack_extend.c | |||
@@ -16,7 +16,7 @@ | |||
16 | #include <linux/skbuff.h> | 16 | #include <linux/skbuff.h> |
17 | #include <net/netfilter/nf_conntrack_extend.h> | 17 | #include <net/netfilter/nf_conntrack_extend.h> |
18 | 18 | ||
19 | static struct nf_ct_ext_type *nf_ct_ext_types[NF_CT_EXT_NUM]; | 19 | static struct nf_ct_ext_type __rcu *nf_ct_ext_types[NF_CT_EXT_NUM]; |
20 | static DEFINE_MUTEX(nf_ct_ext_type_mutex); | 20 | static DEFINE_MUTEX(nf_ct_ext_type_mutex); |
21 | 21 | ||
22 | void __nf_ct_ext_destroy(struct nf_conn *ct) | 22 | void __nf_ct_ext_destroy(struct nf_conn *ct) |
diff --git a/net/netfilter/nf_conntrack_proto.c b/net/netfilter/nf_conntrack_proto.c index 5886ba1d52a0..ed6d92958023 100644 --- a/net/netfilter/nf_conntrack_proto.c +++ b/net/netfilter/nf_conntrack_proto.c | |||
@@ -28,8 +28,8 @@ | |||
28 | #include <net/netfilter/nf_conntrack_l4proto.h> | 28 | #include <net/netfilter/nf_conntrack_l4proto.h> |
29 | #include <net/netfilter/nf_conntrack_core.h> | 29 | #include <net/netfilter/nf_conntrack_core.h> |
30 | 30 | ||
31 | static struct nf_conntrack_l4proto **nf_ct_protos[PF_MAX] __read_mostly; | 31 | static struct nf_conntrack_l4proto __rcu **nf_ct_protos[PF_MAX] __read_mostly; |
32 | struct nf_conntrack_l3proto *nf_ct_l3protos[AF_MAX] __read_mostly; | 32 | struct nf_conntrack_l3proto __rcu *nf_ct_l3protos[AF_MAX] __read_mostly; |
33 | EXPORT_SYMBOL_GPL(nf_ct_l3protos); | 33 | EXPORT_SYMBOL_GPL(nf_ct_l3protos); |
34 | 34 | ||
35 | static DEFINE_MUTEX(nf_ct_proto_mutex); | 35 | static DEFINE_MUTEX(nf_ct_proto_mutex); |
diff --git a/net/netfilter/nf_log.c b/net/netfilter/nf_log.c index 7df37fd786bc..b07393eab88e 100644 --- a/net/netfilter/nf_log.c +++ b/net/netfilter/nf_log.c | |||
@@ -16,7 +16,7 @@ | |||
16 | #define NF_LOG_PREFIXLEN 128 | 16 | #define NF_LOG_PREFIXLEN 128 |
17 | #define NFLOGGER_NAME_LEN 64 | 17 | #define NFLOGGER_NAME_LEN 64 |
18 | 18 | ||
19 | static const struct nf_logger *nf_loggers[NFPROTO_NUMPROTO] __read_mostly; | 19 | static const struct nf_logger __rcu *nf_loggers[NFPROTO_NUMPROTO] __read_mostly; |
20 | static struct list_head nf_loggers_l[NFPROTO_NUMPROTO] __read_mostly; | 20 | static struct list_head nf_loggers_l[NFPROTO_NUMPROTO] __read_mostly; |
21 | static DEFINE_MUTEX(nf_log_mutex); | 21 | static DEFINE_MUTEX(nf_log_mutex); |
22 | 22 | ||
diff --git a/net/netfilter/nf_queue.c b/net/netfilter/nf_queue.c index 78b3cf9c519c..74aebed5bd28 100644 --- a/net/netfilter/nf_queue.c +++ b/net/netfilter/nf_queue.c | |||
@@ -18,7 +18,7 @@ | |||
18 | * long term mutex. The handler must provide an an outfn() to accept packets | 18 | * long term mutex. The handler must provide an an outfn() to accept packets |
19 | * for queueing and must reinject all packets it receives, no matter what. | 19 | * for queueing and must reinject all packets it receives, no matter what. |
20 | */ | 20 | */ |
21 | static const struct nf_queue_handler *queue_handler[NFPROTO_NUMPROTO] __read_mostly; | 21 | static const struct nf_queue_handler __rcu *queue_handler[NFPROTO_NUMPROTO] __read_mostly; |
22 | 22 | ||
23 | static DEFINE_MUTEX(queue_handler_mutex); | 23 | static DEFINE_MUTEX(queue_handler_mutex); |
24 | 24 | ||