diff options
Diffstat (limited to 'net/core/skbuff.c')
-rw-r--r-- | net/core/skbuff.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 0bb0d8877954..1e7acdc30732 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c | |||
@@ -4179,7 +4179,7 @@ int sock_queue_err_skb(struct sock *sk, struct sk_buff *skb) | |||
4179 | 4179 | ||
4180 | skb_queue_tail(&sk->sk_error_queue, skb); | 4180 | skb_queue_tail(&sk->sk_error_queue, skb); |
4181 | if (!sock_flag(sk, SOCK_DEAD)) | 4181 | if (!sock_flag(sk, SOCK_DEAD)) |
4182 | sk->sk_data_ready(sk); | 4182 | sk->sk_error_report(sk); |
4183 | return 0; | 4183 | return 0; |
4184 | } | 4184 | } |
4185 | EXPORT_SYMBOL(sock_queue_err_skb); | 4185 | EXPORT_SYMBOL(sock_queue_err_skb); |
@@ -4904,7 +4904,7 @@ static unsigned int skb_gso_transport_seglen(const struct sk_buff *skb) | |||
4904 | thlen += inner_tcp_hdrlen(skb); | 4904 | thlen += inner_tcp_hdrlen(skb); |
4905 | } else if (likely(shinfo->gso_type & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6))) { | 4905 | } else if (likely(shinfo->gso_type & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6))) { |
4906 | thlen = tcp_hdrlen(skb); | 4906 | thlen = tcp_hdrlen(skb); |
4907 | } else if (unlikely(shinfo->gso_type & SKB_GSO_SCTP)) { | 4907 | } else if (unlikely(skb_is_gso_sctp(skb))) { |
4908 | thlen = sizeof(struct sctphdr); | 4908 | thlen = sizeof(struct sctphdr); |
4909 | } | 4909 | } |
4910 | /* UFO sets gso_size to the size of the fragmentation | 4910 | /* UFO sets gso_size to the size of the fragmentation |
@@ -5020,13 +5020,16 @@ EXPORT_SYMBOL_GPL(skb_gso_validate_mac_len); | |||
5020 | 5020 | ||
5021 | static struct sk_buff *skb_reorder_vlan_header(struct sk_buff *skb) | 5021 | static struct sk_buff *skb_reorder_vlan_header(struct sk_buff *skb) |
5022 | { | 5022 | { |
5023 | int mac_len; | ||
5024 | |||
5023 | if (skb_cow(skb, skb_headroom(skb)) < 0) { | 5025 | if (skb_cow(skb, skb_headroom(skb)) < 0) { |
5024 | kfree_skb(skb); | 5026 | kfree_skb(skb); |
5025 | return NULL; | 5027 | return NULL; |
5026 | } | 5028 | } |
5027 | 5029 | ||
5028 | memmove(skb->data - ETH_HLEN, skb->data - skb->mac_len - VLAN_HLEN, | 5030 | mac_len = skb->data - skb_mac_header(skb); |
5029 | 2 * ETH_ALEN); | 5031 | memmove(skb_mac_header(skb) + VLAN_HLEN, skb_mac_header(skb), |
5032 | mac_len - VLAN_HLEN - ETH_TLEN); | ||
5030 | skb->mac_header += VLAN_HLEN; | 5033 | skb->mac_header += VLAN_HLEN; |
5031 | return skb; | 5034 | return skb; |
5032 | } | 5035 | } |