diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-07-31 21:43:13 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-07-31 21:43:13 -0400 |
commit | fd37ce34bd512f2b1a503f82abf8768da556a955 (patch) | |
tree | 557ff43ff5291d1704527e31293633fbc2f956d5 /net/ipv6/ip6_input.c | |
parent | 4b24ff71108164e047cf2c95990b77651163e315 (diff) | |
parent | caacf05e5ad1abf0a2864863da4e33024bc68ec6 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Pull networking update from David S. Miller:
"I think Eric Dumazet and I have dealt with all of the known routing
cache removal fallout. Some other minor fixes all around.
1) Fix RCU of cached routes, particular of output routes which require
liberation via call_rcu() instead of call_rcu_bh(). From Eric
Dumazet.
2) Make sure we purge net device references in cached routes properly.
3) TG3 driver bug fixes from Michael Chan.
4) Fix reported 'expires' value in ipv6 routes, from Li Wei.
5) TUN driver ioctl leaks kernel bytes to userspace, from Mathias
Krause."
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (22 commits)
ipv4: Properly purge netdev references on uncached routes.
ipv4: Cache routes in nexthop exception entries.
ipv4: percpu nh_rth_output cache
ipv4: Restore old dst_free() behavior.
bridge: make port attributes const
ipv4: remove rt_cache_rebuild_count
net: ipv4: fix RCU races on dst refcounts
net: TCP early demux cleanup
tun: Fix formatting.
net/tun: fix ioctl() based info leaks
tg3: Update version to 3.124
tg3: Fix race condition in tg3_get_stats64()
tg3: Add New 5719 Read DMA workaround
tg3: Fix Read DMA workaround for 5719 A0.
tg3: Request APE_LOCK_PHY before PHY access
ipv6: fix incorrect route 'expires' value passed to userspace
mISDN: Bugfix only few bytes are transfered on a connection
seeq: use PTR_RET at init_module of driver
bnx2x: remove cast around the kmalloc in bnx2x_prev_mark_path
ipv4: clean up put_child
...
Diffstat (limited to 'net/ipv6/ip6_input.c')
-rw-r--r-- | net/ipv6/ip6_input.c | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/net/ipv6/ip6_input.c b/net/ipv6/ip6_input.c index 47975e363fcd..a52d864d562b 100644 --- a/net/ipv6/ip6_input.c +++ b/net/ipv6/ip6_input.c | |||
@@ -52,11 +52,9 @@ int ip6_rcv_finish(struct sk_buff *skb) | |||
52 | if (sysctl_ip_early_demux && !skb_dst(skb)) { | 52 | if (sysctl_ip_early_demux && !skb_dst(skb)) { |
53 | const struct inet6_protocol *ipprot; | 53 | const struct inet6_protocol *ipprot; |
54 | 54 | ||
55 | rcu_read_lock(); | ||
56 | ipprot = rcu_dereference(inet6_protos[ipv6_hdr(skb)->nexthdr]); | 55 | ipprot = rcu_dereference(inet6_protos[ipv6_hdr(skb)->nexthdr]); |
57 | if (ipprot && ipprot->early_demux) | 56 | if (ipprot && ipprot->early_demux) |
58 | ipprot->early_demux(skb); | 57 | ipprot->early_demux(skb); |
59 | rcu_read_unlock(); | ||
60 | } | 58 | } |
61 | if (!skb_dst(skb)) | 59 | if (!skb_dst(skb)) |
62 | ip6_route_input(skb); | 60 | ip6_route_input(skb); |