On Fri, Jan 11, 2008 at 11:00:20AM +1100, Herbert Xu wrote: > On Fri, Jan 11, 2008 at 12:10:42AM +0100, Jarek Poplawski wrote: > > > > It seems this optimization could've a side effect: if during such a > > loop updates are done, and r is seen !NULL during while() check, but > > NULL after rcu_dereference(), the listing/counting could stop too > > soon. So, IMHO, probably the first version of this patch is more > > reliable. (Or alternatively additional check is needed before return.) > > No, while the value of r->u.dst.rt_next can change between two readings, > the value of r cannot.
...Then, of course, it's O.K.! It looks like I'm really too lazy and/or these selfdocumenting features of RCU are a bit overrated: one can never be sure which pointer is really RCU protected without checking a few places?! So, after looking at this rt_cache_get_next() and this patch only, it's looks like the third candidate after seq->private and rtable... Thanks for explanation and sorry for disturbing! Jarek P. -- 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