diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-08-05 12:42:01 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-08-05 12:42:01 -0400 |
| commit | 07d952dc669bb70a9716a81e140e89b7d4969f09 (patch) | |
| tree | 6e6455adcfdbd689e98e417401d692784de8ff92 /include | |
| parent | 5fdb32472ec6cd1d62788d8872585b342b5d1d92 (diff) | |
| parent | c15fea2d8ca834dae491339c47e4fb3c81428190 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (54 commits)
ipv6: check for IPv4 mapped addresses when connecting IPv6 sockets
mlx4: decreasing ref count when removing mac
net: Fix security_socket_sendmsg() bypass problem.
net: Cap number of elements for sendmmsg
net: sendmmsg should only return an error if no messages were sent
ixgbe: fix PHY link setup for 82599
ixgbe: fix __ixgbe_notify_dca() bail out code
igb: fix WOL on second port of i350 device
e1000e: minor re-order of #include files
e1000e: remove unnecessary check for NULL pointer
intel drivers: repair missing flush operations
macb: restore wrap bit when performing underrun cleanup
cdc_ncm: fix endianness problem.
irda: use PCI_VENDOR_ID_*
mlx4: Fixing Ethernet unicast packet steering
net: fix NULL dereferences in check_peer_redir()
bnx2x: Clear MDIO access warning during first driver load
bnx2x: Fix BCM578xx MAC test
bnx2x: Fix BCM54618se invalid link indication
bnx2x: Fix BCM84833 link
...
Diffstat (limited to 'include')
| -rw-r--r-- | include/net/cipso_ipv4.h | 2 | ||||
| -rw-r--r-- | include/net/dst.h | 17 | ||||
| -rw-r--r-- | include/net/netlabel.h | 2 |
3 files changed, 15 insertions, 6 deletions
diff --git a/include/net/cipso_ipv4.h b/include/net/cipso_ipv4.h index 3b938743514b..9808877c2ab9 100644 --- a/include/net/cipso_ipv4.h +++ b/include/net/cipso_ipv4.h | |||
| @@ -8,7 +8,7 @@ | |||
| 8 | * have chosen to adopt the protocol and over the years it has become a | 8 | * have chosen to adopt the protocol and over the years it has become a |
| 9 | * de-facto standard for labeled networking. | 9 | * de-facto standard for labeled networking. |
| 10 | * | 10 | * |
| 11 | * Author: Paul Moore <paul.moore@hp.com> | 11 | * Author: Paul Moore <paul@paul-moore.com> |
| 12 | * | 12 | * |
| 13 | */ | 13 | */ |
| 14 | 14 | ||
diff --git a/include/net/dst.h b/include/net/dst.h index 29e255796ce1..13d507d69ddb 100644 --- a/include/net/dst.h +++ b/include/net/dst.h | |||
| @@ -37,7 +37,7 @@ struct dst_entry { | |||
| 37 | unsigned long _metrics; | 37 | unsigned long _metrics; |
| 38 | unsigned long expires; | 38 | unsigned long expires; |
| 39 | struct dst_entry *path; | 39 | struct dst_entry *path; |
| 40 | struct neighbour *_neighbour; | 40 | struct neighbour __rcu *_neighbour; |
| 41 | #ifdef CONFIG_XFRM | 41 | #ifdef CONFIG_XFRM |
| 42 | struct xfrm_state *xfrm; | 42 | struct xfrm_state *xfrm; |
| 43 | #else | 43 | #else |
| @@ -88,12 +88,17 @@ struct dst_entry { | |||
| 88 | 88 | ||
| 89 | static inline struct neighbour *dst_get_neighbour(struct dst_entry *dst) | 89 | static inline struct neighbour *dst_get_neighbour(struct dst_entry *dst) |
| 90 | { | 90 | { |
| 91 | return dst->_neighbour; | 91 | return rcu_dereference(dst->_neighbour); |
| 92 | } | ||
| 93 | |||
| 94 | static inline struct neighbour *dst_get_neighbour_raw(struct dst_entry *dst) | ||
| 95 | { | ||
| 96 | return rcu_dereference_raw(dst->_neighbour); | ||
| 92 | } | 97 | } |
| 93 | 98 | ||
| 94 | static inline void dst_set_neighbour(struct dst_entry *dst, struct neighbour *neigh) | 99 | static inline void dst_set_neighbour(struct dst_entry *dst, struct neighbour *neigh) |
| 95 | { | 100 | { |
| 96 | dst->_neighbour = neigh; | 101 | rcu_assign_pointer(dst->_neighbour, neigh); |
| 97 | } | 102 | } |
| 98 | 103 | ||
| 99 | extern u32 *dst_cow_metrics_generic(struct dst_entry *dst, unsigned long old); | 104 | extern u32 *dst_cow_metrics_generic(struct dst_entry *dst, unsigned long old); |
| @@ -382,8 +387,12 @@ static inline void dst_rcu_free(struct rcu_head *head) | |||
| 382 | static inline void dst_confirm(struct dst_entry *dst) | 387 | static inline void dst_confirm(struct dst_entry *dst) |
| 383 | { | 388 | { |
| 384 | if (dst) { | 389 | if (dst) { |
| 385 | struct neighbour *n = dst_get_neighbour(dst); | 390 | struct neighbour *n; |
| 391 | |||
| 392 | rcu_read_lock(); | ||
| 393 | n = dst_get_neighbour(dst); | ||
| 386 | neigh_confirm(n); | 394 | neigh_confirm(n); |
| 395 | rcu_read_unlock(); | ||
| 387 | } | 396 | } |
| 388 | } | 397 | } |
| 389 | 398 | ||
diff --git a/include/net/netlabel.h b/include/net/netlabel.h index f21a16ee3705..f67440970d7e 100644 --- a/include/net/netlabel.h +++ b/include/net/netlabel.h | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | * The NetLabel system manages static and dynamic label mappings for network | 4 | * The NetLabel system manages static and dynamic label mappings for network |
| 5 | * protocols such as CIPSO and RIPSO. | 5 | * protocols such as CIPSO and RIPSO. |
| 6 | * | 6 | * |
| 7 | * Author: Paul Moore <paul.moore@hp.com> | 7 | * Author: Paul Moore <paul@paul-moore.com> |
| 8 | * | 8 | * |
| 9 | */ | 9 | */ |
| 10 | 10 | ||
