diff options
| author | Eric Dumazet <eric.dumazet@gmail.com> | 2010-09-09 01:33:43 -0400 | 
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2010-09-09 18:02:39 -0400 | 
| commit | 49d61e2390c92bd226fc395a6165eb5a65ae4de6 (patch) | |
| tree | d5c6e07e51999aca2a461c7087b7a01461c66ba8 | |
| parent | f39234d60617d37818b30991e6794643ce220296 (diff) | |
tunnels: missing rcu_assign_pointer()
xfrm4_tunnel_register() & xfrm6_tunnel_register() should
use rcu_assign_pointer() to make sure previous writes
(to handler->next) are committed to memory before chain
insertion.
deregister functions dont need a particular barrier.
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
| -rw-r--r-- | net/ipv4/tunnel4.c | 2 | ||||
| -rw-r--r-- | net/ipv6/tunnel6.c | 2 | 
2 files changed, 2 insertions, 2 deletions
| diff --git a/net/ipv4/tunnel4.c b/net/ipv4/tunnel4.c index df59d16337f2..9a17bd2a0a37 100644 --- a/net/ipv4/tunnel4.c +++ b/net/ipv4/tunnel4.c | |||
| @@ -39,7 +39,7 @@ int xfrm4_tunnel_register(struct xfrm_tunnel *handler, unsigned short family) | |||
| 39 | } | 39 | } | 
| 40 | 40 | ||
| 41 | handler->next = *pprev; | 41 | handler->next = *pprev; | 
| 42 | *pprev = handler; | 42 | rcu_assign_pointer(*pprev, handler); | 
| 43 | 43 | ||
| 44 | ret = 0; | 44 | ret = 0; | 
| 45 | 45 | ||
| diff --git a/net/ipv6/tunnel6.c b/net/ipv6/tunnel6.c index 3177fe0459e0..d9864725d0c6 100644 --- a/net/ipv6/tunnel6.c +++ b/net/ipv6/tunnel6.c | |||
| @@ -51,7 +51,7 @@ int xfrm6_tunnel_register(struct xfrm6_tunnel *handler, unsigned short family) | |||
| 51 | } | 51 | } | 
| 52 | 52 | ||
| 53 | handler->next = *pprev; | 53 | handler->next = *pprev; | 
| 54 | *pprev = handler; | 54 | rcu_assign_pointer(*pprev, handler); | 
| 55 | 55 | ||
| 56 | ret = 0; | 56 | ret = 0; | 
| 57 | 57 | ||
