aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteffen Klassert <steffen.klassert@secunet.com>2017-01-30 00:45:38 -0500
committerSteffen Klassert <steffen.klassert@secunet.com>2017-01-30 00:45:38 -0500
commitf991bb9da142ba79b54ed0757f22e756f45e2c5a (patch)
tree0c1e5ec4de598c841b8fae187c4b1b783c1ceb02
parenteb758c8864d49f5786432ce38fd8a72bdbbd10cf (diff)
net: Drop secpath on free after gro merge.
With a followup patch, a gro merged skb can have a secpath. So drop it before freeing or reusing the skb. Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
-rw-r--r--net/core/dev.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index 56818f7eab2b..ef3a969477bf 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -4623,6 +4623,7 @@ static gro_result_t napi_skb_finish(gro_result_t ret, struct sk_buff *skb)
4623 case GRO_MERGED_FREE: 4623 case GRO_MERGED_FREE:
4624 if (NAPI_GRO_CB(skb)->free == NAPI_GRO_FREE_STOLEN_HEAD) { 4624 if (NAPI_GRO_CB(skb)->free == NAPI_GRO_FREE_STOLEN_HEAD) {
4625 skb_dst_drop(skb); 4625 skb_dst_drop(skb);
4626 secpath_reset(skb);
4626 kmem_cache_free(skbuff_head_cache, skb); 4627 kmem_cache_free(skbuff_head_cache, skb);
4627 } else { 4628 } else {
4628 __kfree_skb(skb); 4629 __kfree_skb(skb);
@@ -4663,6 +4664,7 @@ static void napi_reuse_skb(struct napi_struct *napi, struct sk_buff *skb)
4663 skb->encapsulation = 0; 4664 skb->encapsulation = 0;
4664 skb_shinfo(skb)->gso_type = 0; 4665 skb_shinfo(skb)->gso_type = 0;
4665 skb->truesize = SKB_TRUESIZE(skb_end_offset(skb)); 4666 skb->truesize = SKB_TRUESIZE(skb_end_offset(skb));
4667 secpath_reset(skb);
4666 4668
4667 napi->skb = skb; 4669 napi->skb = skb;
4668} 4670}