>>>>> In <15139.6804.985808.413675@xxxxxxxxxxxxxxx>
>>>>> "David S. Miller" <davem@xxxxxxxxxx> wrote:
> It may revert to the behavior of 2.4.3 but it is a broken
> change. pskb_may_pull() can change all of the header
> pointers of the skb on you, so it has to reload skb->h.raw
> or whatever to be correct.
> It also must jump to discard if pskb_may_pull() fails, none of
> the other code below that call is valid if it fails.
I understand. I've applied the attached patch which simply regards the
value of skb->h.raw rather than skb->data and confirmed working.
Thank you for reviewing the patch.
--- linux/net/ipv6/icmp.c~ Sun Jun 10 16:07:53 2001
+++ linux/net/ipv6/icmp.c Sun Jun 10 16:08:44 2001
@@ -564,7 +564,7 @@
if (!pskb_may_pull(skb, sizeof(struct ipv6hdr)))
- hdr = (struct icmp6hdr *) skb->data;
+ hdr = (struct icmp6hdr *) skb->h.raw;
orig_hdr = (struct ipv6hdr *) (hdr + 1);
rt6_pmtu_discovery(&orig_hdr->daddr, &orig_hdr->saddr, dev,