Messages in this thread | | | Date | Fri, 22 Jun 2012 11:34:08 +0800 | From | Gao feng <> | Subject | Re: Bug in net/ipv6/ip6_fib.c:fib6_dump_table() |
| |
于 2012年06月22日 05:50, Alexey Kuznetsov 写道: > On Thu, Jun 21, 2012 at 10:27:49PM +0200, Eric Dumazet wrote: >> Looking at this code, it lacks proper synchronization >> between tree updaters and tree walkers. >> >> fib6_walker_lock rwlock is not enough to prevent races. > > Hmm. As author of this weird code, I must say I honestly believed it was correct. > At least I tried. :-) > > > What's about 2bec5a336.., it does not look reasonable. > The idea was that when you change tree, you fixup sleeping walkers, moving > their location in tree to correct point. So, walkers must not have any stale pointers > at any times (except when you under table write lock) and no skips/counts are required. > I remember how damn difficult was it to make this right (well, sorry, if it is not yet :-)), > so that understand that if some update is forgotten or done incorrectly, it is not so easy to find, > but it is definitely worth of efforts.
Actually, I spent two months to try to reproduce this crash four months ago, But finally I give up, I don't think there was any stale pointers, we already correct it when we change the tree. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |