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 715c13495ba6..46cb22215ff4 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c | |||
@@ -4181,7 +4181,7 @@ int sock_queue_err_skb(struct sock *sk, struct sk_buff *skb) | |||
4181 | 4181 | ||
4182 | skb_queue_tail(&sk->sk_error_queue, skb); | 4182 | skb_queue_tail(&sk->sk_error_queue, skb); |
4183 | if (!sock_flag(sk, SOCK_DEAD)) | 4183 | if (!sock_flag(sk, SOCK_DEAD)) |
4184 | sk->sk_data_ready(sk); | 4184 | sk->sk_error_report(sk); |
4185 | return 0; | 4185 | return 0; |
4186 | } | 4186 | } |
4187 | EXPORT_SYMBOL(sock_queue_err_skb); | 4187 | EXPORT_SYMBOL(sock_queue_err_skb); |
@@ -4906,7 +4906,7 @@ static unsigned int skb_gso_transport_seglen(const struct sk_buff *skb) | |||
4906 | thlen += inner_tcp_hdrlen(skb); | 4906 | thlen += inner_tcp_hdrlen(skb); |
4907 | } else if (likely(shinfo->gso_type & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6))) { | 4907 | } else if (likely(shinfo->gso_type & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6))) { |
4908 | thlen = tcp_hdrlen(skb); | 4908 | thlen = tcp_hdrlen(skb); |
4909 | } else if (unlikely(shinfo->gso_type & SKB_GSO_SCTP)) { | 4909 | } else if (unlikely(skb_is_gso_sctp(skb))) { |
4910 | thlen = sizeof(struct sctphdr); | 4910 | thlen = sizeof(struct sctphdr); |
4911 | } | 4911 | } |
4912 | /* UFO sets gso_size to the size of the fragmentation | 4912 | /* UFO sets gso_size to the size of the fragmentation |
@@ -5022,13 +5022,16 @@ EXPORT_SYMBOL_GPL(skb_gso_validate_mac_len); | |||
5022 | 5022 | ||
5023 | static struct sk_buff *skb_reorder_vlan_header(struct sk_buff *skb) | 5023 | static struct sk_buff *skb_reorder_vlan_header(struct sk_buff *skb) |
5024 | { | 5024 | { |
5025 | int mac_len; | ||
5026 | |||
5025 | if (skb_cow(skb, skb_headroom(skb)) < 0) { | 5027 | if (skb_cow(skb, skb_headroom(skb)) < 0) { |
5026 | kfree_skb(skb); | 5028 | kfree_skb(skb); |
5027 | return NULL; | 5029 | return NULL; |
5028 | } | 5030 | } |
5029 | 5031 | ||
5030 | memmove(skb->data - ETH_HLEN, skb->data - skb->mac_len - VLAN_HLEN, | 5032 | mac_len = skb->data - skb_mac_header(skb); |
5031 | 2 * ETH_ALEN); | 5033 | memmove(skb_mac_header(skb) + VLAN_HLEN, skb_mac_header(skb), |
5034 | mac_len - VLAN_HLEN - ETH_TLEN); | ||
5032 | skb->mac_header += VLAN_HLEN; | 5035 | skb->mac_header += VLAN_HLEN; |
5033 | return skb; | 5036 | return skb; |
5034 | } | 5037 | } |