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

Reply via email to