Messages in this thread | | | Date | Thu, 11 Nov 2010 04:31:46 -0800 | From | "Paul E. McKenney" <> | Subject | Re: [PATCH RFC tip/core/rcu 11/12] rcu: fix race condition in synchronize_sched_expedited() |
| |
On Thu, Nov 11, 2010 at 10:10:33AM +0100, Tejun Heo wrote: > Hello, Paul, Lai. > > On 11/11/2010 05:20 AM, Paul E. McKenney wrote: > > On Wed, Nov 10, 2010 at 04:56:32PM +0800, Lai Jiangshan wrote: > >> On 11/09/2010 09:26 PM, Tejun Heo wrote: > >>> Hello, Paul. > >>> > >>> > >>> How about something like the following? It's slightly bigger but I > >>> think it's a bit easier to understand. Thanks. > >> > >> Hello, Paul, Tejun, > >> > >> I think this approach is good and much better when several tasks > >> call synchronize_sched_expedited() at the same time. > > > > I am becoming more comfortable with it as well. Tejun, what kind of > > testing did you do? Lai, could you please run it on your systems? > > I just compile tested it (so no SOB). Please feel free to take it and > shape it into a proper patch. Oh, I think we can drop both mb()'s at > the top and bottom as both atomic_inc_return() and atomic_cmpxchg() > imply full memory barrier.
Actually, the memory barriers are still one source of discomfort to me. I am concerned about the path out of the function that skips the atomic_cmpxchg(), which seem to happen if some concurrent invocation advances the "done" counter past us before we get around to checking it. I agree on the atomic_inc_return() upon entry to the function, though.
And this is going to need some serious testing either way. ;-)
Thanx, Paul
| |