aboutsummaryrefslogtreecommitdiffstats
path: root/main/linux-grsec/ip_gre2.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/linux-grsec/ip_gre2.patch')
-rw-r--r--main/linux-grsec/ip_gre2.patch17
1 files changed, 17 insertions, 0 deletions
diff --git a/main/linux-grsec/ip_gre2.patch b/main/linux-grsec/ip_gre2.patch
new file mode 100644
index 0000000000..52c44076d2
--- /dev/null
+++ b/main/linux-grsec/ip_gre2.patch
@@ -0,0 +1,17 @@
+--- linux-2.6.32/net/ipv4/ip_gre.c.orig
++++ linux-2.6.32/net/ipv4/ip_gre.c
+@@ -803,11 +803,13 @@
+ tunnel->err_count = 0;
+ }
+
+- max_headroom = LL_RESERVED_SPACE(tdev) + gre_hlen;
++ max_headroom = LL_RESERVED_SPACE(tdev) + gre_hlen + rt->u.dst.header_len;
+
+ if (skb_headroom(skb) < max_headroom || skb_shared(skb)||
+ (skb_cloned(skb) && !skb_clone_writable(skb, 0))) {
+ struct sk_buff *new_skb = skb_realloc_headroom(skb, max_headroom);
++ if (max_headroom > dev->needed_headroom)
++ dev->needed_headroom = max_headroom;
+ if (!new_skb) {
+ ip_rt_put(rt);
+ stats->tx_dropped++;