diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-08-13 23:48:46 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-08-13 23:48:46 -0400 |
| commit | 7a49efae71397cf7e9299bbb22b2d12f7cf12428 (patch) | |
| tree | d4e47542448b0018f4f684e4097efb05db6bd355 /net/ipv6 | |
| parent | 0ff8285075a1242dbc969b6b4b1719d692931a02 (diff) | |
| parent | 877acedc0d3ea07f7b36573ed2f1f479c2c1eefd (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (56 commits)
netns: Fix crash by making igmp per namespace
bnx2x: Version update
bnx2x: Checkpatch compliance
bnx2x: Spelling mistakes
bnx2x: Minor code improvements
bnx2x: Driver info
bnx2x: 1G LED does not turn off
bnx2x: 8073 PHY changes
bnx2x: Change GPIO for any port
bnx2x: Pause settings
bnx2x: Link order with external PHY
bnx2x: No LRO without Rx checksum
bnx2x: Wrong structure size
bnx2x: WoL capability
bnx2x: Clearing MAC addresses filters
bnx2x: Delay in while loops
bnx2x: PBA Table Page Alignment Workaround
bnx2x: Self-test false positive
bnx2x: Memory allocation
bnx2x: HW attention lock
...
Diffstat (limited to 'net/ipv6')
| -rw-r--r-- | net/ipv6/route.c | 3 | ||||
| -rw-r--r-- | net/ipv6/udp.c | 6 |
2 files changed, 5 insertions, 4 deletions
diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 5a3e87e4b18f..41b165ffb369 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c | |||
| @@ -2187,8 +2187,9 @@ static int rt6_fill_node(struct sk_buff *skb, struct rt6_info *rt, | |||
| 2187 | #endif | 2187 | #endif |
| 2188 | NLA_PUT_U32(skb, RTA_IIF, iif); | 2188 | NLA_PUT_U32(skb, RTA_IIF, iif); |
| 2189 | } else if (dst) { | 2189 | } else if (dst) { |
| 2190 | struct inet6_dev *idev = ip6_dst_idev(&rt->u.dst); | ||
| 2190 | struct in6_addr saddr_buf; | 2191 | struct in6_addr saddr_buf; |
| 2191 | if (ipv6_dev_get_saddr(ip6_dst_idev(&rt->u.dst)->dev, | 2192 | if (ipv6_dev_get_saddr(idev ? idev->dev : NULL, |
| 2192 | dst, 0, &saddr_buf) == 0) | 2193 | dst, 0, &saddr_buf) == 0) |
| 2193 | NLA_PUT(skb, RTA_PREFSRC, 16, &saddr_buf); | 2194 | NLA_PUT(skb, RTA_PREFSRC, 16, &saddr_buf); |
| 2194 | } | 2195 | } |
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index d1477b350f76..a6aecf76a71b 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c | |||
| @@ -379,7 +379,7 @@ static int __udp6_lib_mcast_deliver(struct net *net, struct sk_buff *skb, | |||
| 379 | uh->source, saddr, dif))) { | 379 | uh->source, saddr, dif))) { |
| 380 | struct sk_buff *buff = skb_clone(skb, GFP_ATOMIC); | 380 | struct sk_buff *buff = skb_clone(skb, GFP_ATOMIC); |
| 381 | if (buff) { | 381 | if (buff) { |
| 382 | bh_lock_sock_nested(sk2); | 382 | bh_lock_sock(sk2); |
| 383 | if (!sock_owned_by_user(sk2)) | 383 | if (!sock_owned_by_user(sk2)) |
| 384 | udpv6_queue_rcv_skb(sk2, buff); | 384 | udpv6_queue_rcv_skb(sk2, buff); |
| 385 | else | 385 | else |
| @@ -387,7 +387,7 @@ static int __udp6_lib_mcast_deliver(struct net *net, struct sk_buff *skb, | |||
| 387 | bh_unlock_sock(sk2); | 387 | bh_unlock_sock(sk2); |
| 388 | } | 388 | } |
| 389 | } | 389 | } |
| 390 | bh_lock_sock_nested(sk); | 390 | bh_lock_sock(sk); |
| 391 | if (!sock_owned_by_user(sk)) | 391 | if (!sock_owned_by_user(sk)) |
| 392 | udpv6_queue_rcv_skb(sk, skb); | 392 | udpv6_queue_rcv_skb(sk, skb); |
| 393 | else | 393 | else |
| @@ -508,7 +508,7 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct hlist_head udptable[], | |||
| 508 | 508 | ||
| 509 | /* deliver */ | 509 | /* deliver */ |
| 510 | 510 | ||
| 511 | bh_lock_sock_nested(sk); | 511 | bh_lock_sock(sk); |
| 512 | if (!sock_owned_by_user(sk)) | 512 | if (!sock_owned_by_user(sk)) |
| 513 | udpv6_queue_rcv_skb(sk, skb); | 513 | udpv6_queue_rcv_skb(sk, skb); |
| 514 | else | 514 | else |
