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