![]() | |||||||||||||
Messages in this thread |
On Wed, Jun 28, 2006 at 11:41:21PM +0400, Oleg Nesterov wrote: > On 06/27, Paul E. McKenney wrote: > > > > On Wed, Jun 28, 2006 at 01:13:58AM +0400, Oleg Nesterov wrote: > > > > > > Also, I can't understand the purpose of 2-nd synchronize_sched() in > > > synchronize_srcu(). > > > > This one handles the srcu_read_unlock() analog of the situation you > > are worried about above. The reader does not have memory barriers in > > srcu_read_unlock(), so an access to the data structure might get > > reordered to follow the decrement of .c[0] -- which would get messed > > up by the following kfree(). > > Aha, I see. Fortunately, we understood opposite sides of the problem, so, taken together, we have it covered. ;-) Now we just need to figure out how to find the problems that both of us missed! > The last question. The 'srcu-2' you posted today does synchronize_srcu_flip() > twice. You did it this way because srcu is optimized for readers, otherwise we > could just add smp_rmb() into srcu_read_lock() - this should solve the problem > as well. > > Is my understanding correct? Exactly correct!!! Thanx, Paul - 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/ | ||||||||||||
| Last update: 2006-06-28 17:34 [from the cache] ©2003-2008 | |||||||||||||