On Wed, 2008-12-31 at 03:54 -0500, Peter Memishian wrote: > > Author: meem <Peter.Memishian at Sun.COM> > > Changeset: 8533:66762dc10e32 > > Comments: > > mcast_restart_timers_thread() may not always run when requested > > mcast_restart_timers_thread() panics on exit > > ilm_walker_step() should skip ILM_DELETE ILMs > > IPMP stress reveals igmp_input() ill_lock deadlock > > IPMP stress reveals race between ipif_free() and ill_src_ipif > > assorted comment fixes > > This wad deserves some careful review; please see: > > http://zhadum.east/ws/clearview/clearview-ipmpdev/webrev.ipfixes.2/
ip_multi.c: 1950: In the case where ill is an underlying interface, we're calling ill_ilm_walker_hold() on ill, but not on ilw_ipmp_ill (the IPMP interface). Can that lead to ilm's on the IPMP interface returned by the ilm_walker_*() being manipulated or deleted by other threads while referenced by the caller? 1642: This function's implementation is a bit twisted given the comment above it that states that it's only used for IPv4. If that's the case, then why go through the trouble of converting things to IPv6 addresses to compare against ilm_v6addr instead of just comparing against ilm_addr? Anyway, that's not your doing, it was like that before. 1966: ilm_walker_step_helper() is only used by ilm_walker_step(), so it should be static. Perhaps ilm_walker_step_all() would be more descriptive (just a suggestion). -Seb
