diff options
| author | <jgarzik@pretzel.yyz.us> | 2005-05-27 22:07:02 -0400 |
|---|---|---|
| committer | Jeff Garzik <jgarzik@pobox.com> | 2005-05-27 22:07:02 -0400 |
| commit | 1f15d694522af9cd7492695f11dd2dc77b6cf098 (patch) | |
| tree | 7f67a4c38456ec73359d576a5c602d18c3c3ef72 /net/ipv4 | |
| parent | fff9cfd99c0f88645c3f50d7476d6c8cef99f140 (diff) | |
| parent | 254feb882a7c6e4e51416dff6a97d847fbbba551 (diff) | |
Automatic merge of /spare/repo/netdev-2.6 branch master
Diffstat (limited to 'net/ipv4')
| -rw-r--r-- | net/ipv4/ip_output.c | 8 | ||||
| -rw-r--r-- | net/ipv4/ipvs/ip_vs_xmit.c | 1 | ||||
| -rw-r--r-- | net/ipv4/netfilter/ip_conntrack_core.c | 28 | ||||
| -rw-r--r-- | net/ipv4/tcp_input.c | 11 |
4 files changed, 17 insertions, 31 deletions
diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c index daebd93fd8a0..760dc8238d65 100644 --- a/net/ipv4/ip_output.c +++ b/net/ipv4/ip_output.c | |||
| @@ -490,6 +490,14 @@ int ip_fragment(struct sk_buff *skb, int (*output)(struct sk_buff*)) | |||
| 490 | /* Partially cloned skb? */ | 490 | /* Partially cloned skb? */ |
| 491 | if (skb_shared(frag)) | 491 | if (skb_shared(frag)) |
| 492 | goto slow_path; | 492 | goto slow_path; |
| 493 | |||
| 494 | BUG_ON(frag->sk); | ||
| 495 | if (skb->sk) { | ||
| 496 | sock_hold(skb->sk); | ||
| 497 | frag->sk = skb->sk; | ||
| 498 | frag->destructor = sock_wfree; | ||
| 499 | skb->truesize -= frag->truesize; | ||
| 500 | } | ||
| 493 | } | 501 | } |
| 494 | 502 | ||
| 495 | /* Everything is OK. Generate! */ | 503 | /* Everything is OK. Generate! */ |
diff --git a/net/ipv4/ipvs/ip_vs_xmit.c b/net/ipv4/ipvs/ip_vs_xmit.c index faa6176bbeb1..de21da00057f 100644 --- a/net/ipv4/ipvs/ip_vs_xmit.c +++ b/net/ipv4/ipvs/ip_vs_xmit.c | |||
| @@ -508,7 +508,6 @@ ip_vs_icmp_xmit(struct sk_buff *skb, struct ip_vs_conn *cp, | |||
| 508 | rc = NF_ACCEPT; | 508 | rc = NF_ACCEPT; |
| 509 | /* do not touch skb anymore */ | 509 | /* do not touch skb anymore */ |
| 510 | atomic_inc(&cp->in_pkts); | 510 | atomic_inc(&cp->in_pkts); |
| 511 | __ip_vs_conn_put(cp); | ||
| 512 | goto out; | 511 | goto out; |
| 513 | } | 512 | } |
| 514 | 513 | ||
diff --git a/net/ipv4/netfilter/ip_conntrack_core.c b/net/ipv4/netfilter/ip_conntrack_core.c index 28d9425d5c39..09e824622977 100644 --- a/net/ipv4/netfilter/ip_conntrack_core.c +++ b/net/ipv4/netfilter/ip_conntrack_core.c | |||
| @@ -940,37 +940,25 @@ void ip_ct_refresh_acct(struct ip_conntrack *ct, | |||
| 940 | struct sk_buff * | 940 | struct sk_buff * |
| 941 | ip_ct_gather_frags(struct sk_buff *skb, u_int32_t user) | 941 | ip_ct_gather_frags(struct sk_buff *skb, u_int32_t user) |
| 942 | { | 942 | { |
| 943 | struct sock *sk = skb->sk; | ||
| 944 | #ifdef CONFIG_NETFILTER_DEBUG | 943 | #ifdef CONFIG_NETFILTER_DEBUG |
| 945 | unsigned int olddebug = skb->nf_debug; | 944 | unsigned int olddebug = skb->nf_debug; |
| 946 | #endif | 945 | #endif |
| 947 | 946 | ||
| 948 | if (sk) { | 947 | skb_orphan(skb); |
| 949 | sock_hold(sk); | ||
| 950 | skb_orphan(skb); | ||
| 951 | } | ||
| 952 | 948 | ||
| 953 | local_bh_disable(); | 949 | local_bh_disable(); |
| 954 | skb = ip_defrag(skb, user); | 950 | skb = ip_defrag(skb, user); |
| 955 | local_bh_enable(); | 951 | local_bh_enable(); |
| 956 | 952 | ||
| 957 | if (!skb) { | 953 | if (skb) { |
| 958 | if (sk) | 954 | ip_send_check(skb->nh.iph); |
| 959 | sock_put(sk); | 955 | skb->nfcache |= NFC_ALTERED; |
| 960 | return skb; | ||
| 961 | } | ||
| 962 | |||
| 963 | if (sk) { | ||
| 964 | skb_set_owner_w(skb, sk); | ||
| 965 | sock_put(sk); | ||
| 966 | } | ||
| 967 | |||
| 968 | ip_send_check(skb->nh.iph); | ||
| 969 | skb->nfcache |= NFC_ALTERED; | ||
| 970 | #ifdef CONFIG_NETFILTER_DEBUG | 956 | #ifdef CONFIG_NETFILTER_DEBUG |
| 971 | /* Packet path as if nothing had happened. */ | 957 | /* Packet path as if nothing had happened. */ |
| 972 | skb->nf_debug = olddebug; | 958 | skb->nf_debug = olddebug; |
| 973 | #endif | 959 | #endif |
| 960 | } | ||
| 961 | |||
| 974 | return skb; | 962 | return skb; |
| 975 | } | 963 | } |
| 976 | 964 | ||
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 79835a67a274..5bad504630a3 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
| @@ -4355,16 +4355,7 @@ int tcp_rcv_established(struct sock *sk, struct sk_buff *skb, | |||
| 4355 | goto no_ack; | 4355 | goto no_ack; |
| 4356 | } | 4356 | } |
| 4357 | 4357 | ||
| 4358 | if (eaten) { | 4358 | __tcp_ack_snd_check(sk, 0); |
| 4359 | if (tcp_in_quickack_mode(tp)) { | ||
| 4360 | tcp_send_ack(sk); | ||
| 4361 | } else { | ||
| 4362 | tcp_send_delayed_ack(sk); | ||
| 4363 | } | ||
| 4364 | } else { | ||
| 4365 | __tcp_ack_snd_check(sk, 0); | ||
| 4366 | } | ||
| 4367 | |||
| 4368 | no_ack: | 4359 | no_ack: |
| 4369 | if (eaten) | 4360 | if (eaten) |
| 4370 | __kfree_skb(skb); | 4361 | __kfree_skb(skb); |
