WRT the IF_AFDATA_LOCK() race condition you mentioned, I re-run the tests 
that I used when I developed that code, but I haven't run into any issues, 
but that doesn't mean there isn't a bug.

Could you please share with me a call path that you believe is 
problematic, or a simple test case that uncovers the issue ?

--Qing
 

> -----Original Message-----
> From: owner-freebsd-...@freebsd.org [mailto:owner-freebsd-
> n...@freebsd.org] On Behalf Of Li, Qing
> Sent: Monday, April 02, 2012 10:54 AM
> To: Ryan Stone
> Cc: freebsd-net
> Subject: RE: Removing an IPv6 address does not remove NDP entries on
> that subnet
> 
> >
> > On Fri, Mar 30, 2012 at 12:28 AM, Li, Qing <qing...@bluecoat.com>
> wrote:
> > >> * In a way this is a good thing as in6_lltable_prefix_free() is
> > >> guaranteed to crash your kernel in two different ways, and that's
> > not
> > >> counting the race conditions that it's subject to.
> > >>
> > >
> > >        Could you please elaborate with some details on the two
> > different
> > >        ways in6_lltable_prefix_free() crashes the kernel
> > definitively ?
> >
> > First, it calls callout_drain on lle->le_timer, but that is never
> > initialized for a v6 llentry.  Second, it never stops the ln_timer_ch
> > callout before it frees the llentry.  Third, it modifies the lltable
> > without holding IF_AFDATA_LOCK(in.c has the third problem: see the
> > -net discussion about kern/165863).
> 
> 
> 1. The reference to &lle->la_timer instead of ln_timer_ch is fine
>    because lle_timer is defined as a union.
> 
> 2. The manpage of "callout_drain()" reads
> 
>  "The function callout_drain() is identical to callout_stop() except
>   that it will wait for the callout to be completed if it is already
>   in progress."
> 
> 3. wrt IF_AFDATA_LOCK() I will check again.
> 
> --Qing
> 
> 
> _______________________________________________
> freebsd-net@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"
_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to