diff options
author | Dmitry Shmidt <dimitrysh@google.com> | 2017-01-17 12:44:14 -0800 |
---|---|---|
committer | Dmitry Shmidt <dimitrysh@google.com> | 2017-01-17 12:44:14 -0800 |
commit | f103e3b0d8e462a747c53fc5a7ac3981ef1e8f3f (patch) | |
tree | 2fcb1d356e096ae0b0c047abebfaa0424223595e /net/ipv6 | |
parent | 82a6fedb6ea53c9f3eb00ab1e0b839d3fcfe5fc2 (diff) | |
parent | d9ea51a9bea4ed29f8fd9c59a8122c7aabcc5562 (diff) |
Merge tag 'v4.4.43' into android-4.4.y
This is the 4.4.43 stable release
Diffstat (limited to 'net/ipv6')
-rw-r--r-- | net/ipv6/ip6_offload.c | 1 | ||||
-rw-r--r-- | net/ipv6/raw.c | 6 |
2 files changed, 6 insertions, 1 deletions
diff --git a/net/ipv6/ip6_offload.c b/net/ipv6/ip6_offload.c index efe6268b8bc3..225f5f7f26ba 100644 --- a/net/ipv6/ip6_offload.c +++ b/net/ipv6/ip6_offload.c @@ -196,6 +196,7 @@ static struct sk_buff **ipv6_gro_receive(struct sk_buff **head, ops = rcu_dereference(inet6_offloads[proto]); if (!ops || !ops->callbacks.gro_receive) { __pskb_pull(skb, skb_gro_offset(skb)); + skb_gro_frag0_invalidate(skb); proto = ipv6_gso_pull_exthdrs(skb, proto); skb_gro_pull(skb, -skb_transport_offset(skb)); skb_reset_transport_header(skb); diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c index 58eb8ee19f34..d503b7f373a3 100644 --- a/net/ipv6/raw.c +++ b/net/ipv6/raw.c @@ -589,7 +589,11 @@ static int rawv6_push_pending_frames(struct sock *sk, struct flowi6 *fl6, } offset += skb_transport_offset(skb); - BUG_ON(skb_copy_bits(skb, offset, &csum, 2)); + err = skb_copy_bits(skb, offset, &csum, 2); + if (err < 0) { + ip6_flush_pending_frames(sk); + goto out; + } /* in case cksum was not initialized */ if (unlikely(csum)) |