diff options
author | David S. Miller <davem@davemloft.net> | 2008-11-07 01:43:03 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-11-07 01:43:03 -0500 |
commit | 9eeda9abd1faf489f3df9a1f557975f4c8650363 (patch) | |
tree | 3e0a58e25b776cfbee193195460324dccb1886c7 /net/ipv4 | |
parent | 61c9eaf90081cbe6dc4f389e0056bff76eca19ec (diff) | |
parent | 4bab0ea1d42dd1927af9df6fbf0003fc00617c50 (diff) |
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts:
drivers/net/wireless/ath5k/base.c
net/8021q/vlan_core.c
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/tcp.c | 3 | ||||
-rw-r--r-- | net/ipv4/udp.c | 12 | ||||
-rw-r--r-- | net/ipv4/xfrm4_state.c | 1 |
3 files changed, 9 insertions, 7 deletions
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index 60c28add96b8..f60a5917e54d 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c | |||
@@ -1374,8 +1374,7 @@ int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, | |||
1374 | sk->sk_state == TCP_CLOSE || | 1374 | sk->sk_state == TCP_CLOSE || |
1375 | (sk->sk_shutdown & RCV_SHUTDOWN) || | 1375 | (sk->sk_shutdown & RCV_SHUTDOWN) || |
1376 | !timeo || | 1376 | !timeo || |
1377 | signal_pending(current) || | 1377 | signal_pending(current)) |
1378 | (flags & MSG_PEEK)) | ||
1379 | break; | 1378 | break; |
1380 | } else { | 1379 | } else { |
1381 | if (sock_flag(sk, SOCK_DONE)) | 1380 | if (sock_flag(sk, SOCK_DONE)) |
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index 7e4d9c871153..54badc9a019d 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c | |||
@@ -320,7 +320,7 @@ struct sock *udp4_lib_lookup(struct net *net, __be32 saddr, __be16 sport, | |||
320 | } | 320 | } |
321 | EXPORT_SYMBOL_GPL(udp4_lib_lookup); | 321 | EXPORT_SYMBOL_GPL(udp4_lib_lookup); |
322 | 322 | ||
323 | static inline struct sock *udp_v4_mcast_next(struct sock *sk, | 323 | static inline struct sock *udp_v4_mcast_next(struct net *net, struct sock *sk, |
324 | __be16 loc_port, __be32 loc_addr, | 324 | __be16 loc_port, __be32 loc_addr, |
325 | __be16 rmt_port, __be32 rmt_addr, | 325 | __be16 rmt_port, __be32 rmt_addr, |
326 | int dif) | 326 | int dif) |
@@ -332,7 +332,8 @@ static inline struct sock *udp_v4_mcast_next(struct sock *sk, | |||
332 | sk_for_each_from(s, node) { | 332 | sk_for_each_from(s, node) { |
333 | struct inet_sock *inet = inet_sk(s); | 333 | struct inet_sock *inet = inet_sk(s); |
334 | 334 | ||
335 | if (s->sk_hash != hnum || | 335 | if (!net_eq(sock_net(s), net) || |
336 | s->sk_hash != hnum || | ||
336 | (inet->daddr && inet->daddr != rmt_addr) || | 337 | (inet->daddr && inet->daddr != rmt_addr) || |
337 | (inet->dport != rmt_port && inet->dport) || | 338 | (inet->dport != rmt_port && inet->dport) || |
338 | (inet->rcv_saddr && inet->rcv_saddr != loc_addr) || | 339 | (inet->rcv_saddr && inet->rcv_saddr != loc_addr) || |
@@ -1131,15 +1132,16 @@ static int __udp4_lib_mcast_deliver(struct net *net, struct sk_buff *skb, | |||
1131 | spin_lock(&hslot->lock); | 1132 | spin_lock(&hslot->lock); |
1132 | sk = sk_head(&hslot->head); | 1133 | sk = sk_head(&hslot->head); |
1133 | dif = skb->dev->ifindex; | 1134 | dif = skb->dev->ifindex; |
1134 | sk = udp_v4_mcast_next(sk, uh->dest, daddr, uh->source, saddr, dif); | 1135 | sk = udp_v4_mcast_next(net, sk, uh->dest, daddr, uh->source, saddr, dif); |
1135 | if (sk) { | 1136 | if (sk) { |
1136 | struct sock *sknext = NULL; | 1137 | struct sock *sknext = NULL; |
1137 | 1138 | ||
1138 | do { | 1139 | do { |
1139 | struct sk_buff *skb1 = skb; | 1140 | struct sk_buff *skb1 = skb; |
1140 | 1141 | ||
1141 | sknext = udp_v4_mcast_next(sk_next(sk), uh->dest, daddr, | 1142 | sknext = udp_v4_mcast_next(net, sk_next(sk), uh->dest, |
1142 | uh->source, saddr, dif); | 1143 | daddr, uh->source, saddr, |
1144 | dif); | ||
1143 | if (sknext) | 1145 | if (sknext) |
1144 | skb1 = skb_clone(skb, GFP_ATOMIC); | 1146 | skb1 = skb_clone(skb, GFP_ATOMIC); |
1145 | 1147 | ||
diff --git a/net/ipv4/xfrm4_state.c b/net/ipv4/xfrm4_state.c index 07735ed280d7..55dc6beab9aa 100644 --- a/net/ipv4/xfrm4_state.c +++ b/net/ipv4/xfrm4_state.c | |||
@@ -33,6 +33,7 @@ __xfrm4_init_tempsel(struct xfrm_state *x, struct flowi *fl, | |||
33 | x->sel.dport_mask = htons(0xffff); | 33 | x->sel.dport_mask = htons(0xffff); |
34 | x->sel.sport = xfrm_flowi_sport(fl); | 34 | x->sel.sport = xfrm_flowi_sport(fl); |
35 | x->sel.sport_mask = htons(0xffff); | 35 | x->sel.sport_mask = htons(0xffff); |
36 | x->sel.family = AF_INET; | ||
36 | x->sel.prefixlen_d = 32; | 37 | x->sel.prefixlen_d = 32; |
37 | x->sel.prefixlen_s = 32; | 38 | x->sel.prefixlen_s = 32; |
38 | x->sel.proto = fl->proto; | 39 | x->sel.proto = fl->proto; |