Messages in this thread | | | Date | Thu, 13 Nov 2008 12:21:00 -0500 (EST) | From | Steven Rostedt <> | Subject | Re: [PATCH 1/2] tracing/function-return-tracer: Make the function return tracer lockless |
| |
On Thu, 13 Nov 2008, Andi Kleen wrote:
> > > local register i > > > i = index; > > > write to index'ed array using i > > > <--------- interrupt here would overwrite data > > > ... > > > index = i + 1; > > > > > > Yes in the common case that would be a danger. But here, if an > > interrupt is raised, it will increment > > the counter and then decrement it at return time without dropping the > > cpu. So after the interrupt, the > > value will remain the same... > > The buffer contents will not be necessarily > the same. See the scenario above. The interrupt would use the > same i as the current function and would overwrite the > partially written entry.
So the answer to this is:
i = index++; barrier(); write to index i (not index);
-- Steve
| |