diff options
| author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-07-05 13:13:03 -0400 |
|---|---|---|
| committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-07-05 13:13:03 -0400 |
| commit | 5e66dd6d66ffe758b39b6dcadf2330753ee1159b (patch) | |
| tree | a72cdcff4448e4af9425cc213ddf56ab23e697fe /net/ipv6 | |
| parent | 026477c1141b67e98e3bd8bdedb7d4b88a3ecd09 (diff) | |
| parent | ca78f6baca863afe2e6a244a0fe94b3a70211d46 (diff) | |
Merge branch 'master' of /home/trondmy/kernel/linux-2.6/
Diffstat (limited to 'net/ipv6')
| -rw-r--r-- | net/ipv6/ipv6_sockglue.c | 11 | ||||
| -rw-r--r-- | net/ipv6/netfilter/ip6_tables.c | 3 |
2 files changed, 12 insertions, 2 deletions
diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c index c28e5c287447..0c17dec11c8d 100644 --- a/net/ipv6/ipv6_sockglue.c +++ b/net/ipv6/ipv6_sockglue.c | |||
| @@ -64,6 +64,14 @@ static struct sk_buff *ipv6_gso_segment(struct sk_buff *skb, int features) | |||
| 64 | struct inet6_protocol *ops; | 64 | struct inet6_protocol *ops; |
| 65 | int proto; | 65 | int proto; |
| 66 | 66 | ||
| 67 | if (unlikely(skb_shinfo(skb)->gso_type & | ||
| 68 | ~(SKB_GSO_UDP | | ||
| 69 | SKB_GSO_DODGY | | ||
| 70 | SKB_GSO_TCP_ECN | | ||
| 71 | SKB_GSO_TCPV6 | | ||
| 72 | 0))) | ||
| 73 | goto out; | ||
| 74 | |||
| 67 | if (unlikely(!pskb_may_pull(skb, sizeof(*ipv6h)))) | 75 | if (unlikely(!pskb_may_pull(skb, sizeof(*ipv6h)))) |
| 68 | goto out; | 76 | goto out; |
| 69 | 77 | ||
| @@ -111,7 +119,8 @@ unlock: | |||
| 111 | 119 | ||
| 112 | for (skb = segs; skb; skb = skb->next) { | 120 | for (skb = segs; skb; skb = skb->next) { |
| 113 | ipv6h = skb->nh.ipv6h; | 121 | ipv6h = skb->nh.ipv6h; |
| 114 | ipv6h->payload_len = htons(skb->len - skb->mac_len); | 122 | ipv6h->payload_len = htons(skb->len - skb->mac_len - |
| 123 | sizeof(*ipv6h)); | ||
| 115 | } | 124 | } |
| 116 | 125 | ||
| 117 | out: | 126 | out: |
diff --git a/net/ipv6/netfilter/ip6_tables.c b/net/ipv6/netfilter/ip6_tables.c index 7ef143c0ebf6..f26898b00347 100644 --- a/net/ipv6/netfilter/ip6_tables.c +++ b/net/ipv6/netfilter/ip6_tables.c | |||
| @@ -25,6 +25,7 @@ | |||
| 25 | #include <linux/vmalloc.h> | 25 | #include <linux/vmalloc.h> |
| 26 | #include <linux/netdevice.h> | 26 | #include <linux/netdevice.h> |
| 27 | #include <linux/module.h> | 27 | #include <linux/module.h> |
| 28 | #include <linux/poison.h> | ||
| 28 | #include <linux/icmpv6.h> | 29 | #include <linux/icmpv6.h> |
| 29 | #include <net/ipv6.h> | 30 | #include <net/ipv6.h> |
| 30 | #include <asm/uaccess.h> | 31 | #include <asm/uaccess.h> |
| @@ -376,7 +377,7 @@ ip6t_do_table(struct sk_buff **pskb, | |||
| 376 | } while (!hotdrop); | 377 | } while (!hotdrop); |
| 377 | 378 | ||
| 378 | #ifdef CONFIG_NETFILTER_DEBUG | 379 | #ifdef CONFIG_NETFILTER_DEBUG |
| 379 | ((struct ip6t_entry *)table_base)->comefrom = 0xdead57ac; | 380 | ((struct ip6t_entry *)table_base)->comefrom = NETFILTER_LINK_POISON; |
| 380 | #endif | 381 | #endif |
| 381 | read_unlock_bh(&table->lock); | 382 | read_unlock_bh(&table->lock); |
| 382 | 383 | ||
