X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=net%2Fipv6%2Fexthdrs.c;h=2b78c840c3491fbca87015f2f1d806eddf93d733;hb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;hp=464a3f4d63e3d34fd241f2dc9e7a9d3e4317f036;hpb=a2c21200f1c81b08cb55e417b68150bba439b646;p=linux-2.6.git diff --git a/net/ipv6/exthdrs.c b/net/ipv6/exthdrs.c index 464a3f4d6..2b78c840c 100644 --- a/net/ipv6/exthdrs.c +++ b/net/ipv6/exthdrs.c @@ -314,9 +314,11 @@ looped_back: dst_release(xchg(&skb->dst, NULL)); ip6_route_input(skb); if (skb->dst->error) { + skb_push(skb, skb->data - skb->nh.raw); dst_input(skb); return -1; } + if (skb->dst->dev->flags&IFF_LOOPBACK) { if (skb->nh.ipv6h->hop_limit <= 1) { IP6_INC_STATS_BH(IPSTATS_MIB_INHDRERRORS); @@ -329,6 +331,7 @@ looped_back: goto looped_back; } + skb_push(skb, skb->data - skb->nh.raw); dst_input(skb); return -1; }