aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-06-28 22:57:31 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2009-06-28 22:57:31 -0400
commit52989765629e7d182b4f146050ebba0abf2cb0b7 (patch)
tree9fee6afaec80fa6479889a72299da287a78343ba /net/ipv4
parent9a8fb9ee7a80f5280388b98dc7636d537866fa72 (diff)
parentbd46cb6cf11867130a41ea9546dd65688b71f3c2 (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: be2net: Fix to avoid a crash seen on PPC with LRO and Jumbo frames. gro: Flush GRO packets in napi_disable_pending path inet: Call skb_orphan before tproxy activates mac80211: Use rcu_barrier() on unload. sunrpc: Use rcu_barrier() on unload. bridge: Use rcu_barrier() instead of syncronize_net() on unload. ipv6: Use rcu_barrier() on module unload. decnet: Use rcu_barrier() on module unload. sky2: Fix checksum endianness mdio add missing GPL flag sh_eth: remove redundant test on unsigned fsl_pq_mdio: Fix fsl_pq_mdio to work with modules ipv6: avoid wraparound for expired preferred lifetime tcp: missing check ACK flag of received segment in FIN-WAIT-2 state atl1*: add device_set_wakeup_enable to atl1*_set_wol Phonet: generate Netlink RTM_DELADDR when destroying a device Phonet: publicize the Netlink notification function Revert "veth: prevent oops caused by netdev destructor" cpmac: fix compilation failure introduced with netdev_ops conversion ipsec: Fix name of CAST algorithm
Diffstat (limited to 'net/ipv4')
-rw-r--r--net/ipv4/ip_input.c3
-rw-r--r--net/ipv4/tcp_minisocks.c3
2 files changed, 5 insertions, 1 deletions
diff --git a/net/ipv4/ip_input.c b/net/ipv4/ip_input.c
index 490ce20faf38..db46b4b5b2b9 100644
--- a/net/ipv4/ip_input.c
+++ b/net/ipv4/ip_input.c
@@ -440,6 +440,9 @@ int ip_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt,
440 /* Remove any debris in the socket control block */ 440 /* Remove any debris in the socket control block */
441 memset(IPCB(skb), 0, sizeof(struct inet_skb_parm)); 441 memset(IPCB(skb), 0, sizeof(struct inet_skb_parm));
442 442
443 /* Must drop socket now because of tproxy. */
444 skb_orphan(skb);
445
443 return NF_HOOK(PF_INET, NF_INET_PRE_ROUTING, skb, dev, NULL, 446 return NF_HOOK(PF_INET, NF_INET_PRE_ROUTING, skb, dev, NULL,
444 ip_rcv_finish); 447 ip_rcv_finish);
445 448
diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c
index 43bbba7926ee..f8d67ccc64f3 100644
--- a/net/ipv4/tcp_minisocks.c
+++ b/net/ipv4/tcp_minisocks.c
@@ -128,7 +128,8 @@ tcp_timewait_state_process(struct inet_timewait_sock *tw, struct sk_buff *skb,
128 goto kill_with_rst; 128 goto kill_with_rst;
129 129
130 /* Dup ACK? */ 130 /* Dup ACK? */
131 if (!after(TCP_SKB_CB(skb)->end_seq, tcptw->tw_rcv_nxt) || 131 if (!th->ack ||
132 !after(TCP_SKB_CB(skb)->end_seq, tcptw->tw_rcv_nxt) ||
132 TCP_SKB_CB(skb)->end_seq == TCP_SKB_CB(skb)->seq) { 133 TCP_SKB_CB(skb)->end_seq == TCP_SKB_CB(skb)->seq) {
133 inet_twsk_put(tw); 134 inet_twsk_put(tw);
134 return TCP_TW_SUCCESS; 135 return TCP_TW_SUCCESS;