From: [EMAIL PROTECTED]
Date: Sat, 25 Mar 2006 00:33:46 -0800

> A possible bug:
> 
>       rt_fill_info() calls ipmr_get_route().
> 
>         ipmr_get_route() calls ipmr_cache_unresolved()
> 
>           ipmr_cache_unresolved() gets an error and does kfree_skb(skb)
> 
>           ipmr_cache_unresolved() returns a -ve errno to ipmr_get_route()
> 
>         ipmr_get_route() returns the errno to rt_fill_info()
> 
>       rt_fill_info() diddles with the now-kfreed skb.

Yes, this comes up every few weeks and I keep giving the same
explanation of what needs to happen here each and every time. :)

You'll notice that ipmr_get_route() tries to use the RTNETLINK skb
passed in to send a multicast IPV4 packet out to try and resolve an
unresolved entry which will obviously corrupt the RTNETLINK skb
(which obviously the caller didn't intend to let ipmr_get_route()
use to send an ipv4 packet out) and just about everything else.

So fixing some stray kfree_skb() here is basically pointless.  This
area of the ipmr code needs to be totally rewritten.
-
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