diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2011-08-01 15:59:14 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-08-01 15:59:14 -0700 |
commit | 2622409bea3196b6bc9a164ff35d529fa1a3dc49 (patch) | |
tree | 502e4a8fffb201b57fdf77a9a29a3d559af45414 | |
parent | aa2c12a6c13a890f6ee25307eea7ed386b611ea3 (diff) | |
download | stable-queue-2622409bea3196b6bc9a164ff35d529fa1a3dc49.tar.gz |
3.0 patches
-rw-r--r-- | queue-3.0/gro-only-reset-frag0-when-skb-can-be-pulled.patch | 40 | ||||
-rw-r--r-- | queue-3.0/series | 1 |
2 files changed, 41 insertions, 0 deletions
diff --git a/queue-3.0/gro-only-reset-frag0-when-skb-can-be-pulled.patch b/queue-3.0/gro-only-reset-frag0-when-skb-can-be-pulled.patch new file mode 100644 index 0000000000..257de7b877 --- /dev/null +++ b/queue-3.0/gro-only-reset-frag0-when-skb-can-be-pulled.patch @@ -0,0 +1,40 @@ +From 17dd759c67f21e34f2156abcf415e1f60605a188 Mon Sep 17 00:00:00 2001 +From: Herbert Xu <herbert@gondor.apana.org.au> +Date: Wed, 27 Jul 2011 06:16:28 -0700 +Subject: gro: Only reset frag0 when skb can be pulled + +From: Herbert Xu <herbert@gondor.apana.org.au> + +commit 17dd759c67f21e34f2156abcf415e1f60605a188 upstream. + +Currently skb_gro_header_slow unconditionally resets frag0 and +frag0_len. However, when we can't pull on the skb this leaves +the GRO fields in an inconsistent state. + +This patch fixes this by only resetting those fields after the +pskb_may_pull test. + +Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> +Signed-off-by: David S. Miller <davem@davemloft.net> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + include/linux/netdevice.h | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +--- a/include/linux/netdevice.h ++++ b/include/linux/netdevice.h +@@ -1688,9 +1688,12 @@ static inline int skb_gro_header_hard(st + static inline void *skb_gro_header_slow(struct sk_buff *skb, unsigned int hlen, + unsigned int offset) + { ++ if (!pskb_may_pull(skb, hlen)) ++ return NULL; ++ + NAPI_GRO_CB(skb)->frag0 = NULL; + NAPI_GRO_CB(skb)->frag0_len = 0; +- return pskb_may_pull(skb, hlen) ? skb->data + offset : NULL; ++ return skb->data + offset; + } + + static inline void *skb_gro_mac_header(struct sk_buff *skb) diff --git a/queue-3.0/series b/queue-3.0/series index a8bbabb76f..24f09b3418 100644 --- a/queue-3.0/series +++ b/queue-3.0/series @@ -2,3 +2,4 @@ usb-serial-add-ids-for-winchiphead-usb-rs232-adapter.patch mmc-added-quirks-for-ricoh-1180-e823-lower-base-clock.patch mmc-sdhci-esdhc-imx-sdhci_card_present-does-not-get.patch bridge-send-proper-message_age-in-config-bpdu.patch +gro-only-reset-frag0-when-skb-can-be-pulled.patch |