Stephen Hemminger <[EMAIL PROTECTED]> wrote: > > @@ -1593,12 +1594,19 @@ int ipmr_get_route(struct sk_buff *skb, > read_unlock(&mrt_lock); > return -ENODEV; > } > - skb->nh.raw = skb_push(skb, sizeof(struct iphdr)); > - skb->nh.iph->ihl = sizeof(struct iphdr)>>2; > - skb->nh.iph->saddr = rt->rt_src; > - skb->nh.iph->daddr = rt->rt_dst; > - skb->nh.iph->version = 0; > - err = ipmr_cache_unresolved(vif, skb); > + > + iskb = alloc_skb(sizeof(struct iphdr), GFP_KERNEL); > + if (!iskb) { > + read_unlock(&mrt_lock); > + return -ENOMEM; > + } > + memset(iskb->data, 0, sizeof(struct iphdr)); > + iskb->nh.raw = iskb->data; > + iskb->nh.iph->ihl = sizeof(struct iphdr)>>2; > + iskb->nh.iph->saddr = rt->rt_src; > + iskb->nh.iph->daddr = rt->rt_dst; > + > + err = ipmr_cache_unresolved(vif, iskb);
I'm afraid this is still broken in a different way. If ipmr_cache_unresolved queues the skb onto the unresolved list things it's going to try to use the skb as a netlink skb instead :) Cheers, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmV>HI~} <[EMAIL PROTECTED]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html