diff options
Diffstat (limited to 'net/ipv6')
-rw-r--r-- | net/ipv6/datagram.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/ipv6/datagram.c b/net/ipv6/datagram.c index feba6b197fe9..f16f4f0c5814 100644 --- a/net/ipv6/datagram.c +++ b/net/ipv6/datagram.c | |||
@@ -231,8 +231,8 @@ void ipv6_icmp_error(struct sock *sk, struct sk_buff *skb, int err, | |||
231 | skb_network_header(skb); | 231 | skb_network_header(skb); |
232 | serr->port = port; | 232 | serr->port = port; |
233 | 233 | ||
234 | skb->h.raw = payload; | ||
235 | __skb_pull(skb, payload - skb->data); | 234 | __skb_pull(skb, payload - skb->data); |
235 | skb_reset_transport_header(skb); | ||
236 | 236 | ||
237 | if (sock_queue_err_skb(sk, skb)) | 237 | if (sock_queue_err_skb(sk, skb)) |
238 | kfree_skb(skb); | 238 | kfree_skb(skb); |
@@ -268,8 +268,8 @@ void ipv6_local_error(struct sock *sk, int err, struct flowi *fl, u32 info) | |||
268 | serr->addr_offset = (u8 *)&iph->daddr - skb_network_header(skb); | 268 | serr->addr_offset = (u8 *)&iph->daddr - skb_network_header(skb); |
269 | serr->port = fl->fl_ip_dport; | 269 | serr->port = fl->fl_ip_dport; |
270 | 270 | ||
271 | skb->h.raw = skb->tail; | ||
272 | __skb_pull(skb, skb->tail - skb->data); | 271 | __skb_pull(skb, skb->tail - skb->data); |
272 | skb_reset_transport_header(skb); | ||
273 | 273 | ||
274 | if (sock_queue_err_skb(sk, skb)) | 274 | if (sock_queue_err_skb(sk, skb)) |
275 | kfree_skb(skb); | 275 | kfree_skb(skb); |