Messages in this thread | | | Subject | Re: [PATCH v2] tracing/events: don't discard an event after commit | From | Tom Zanussi <> | Date | Mon, 23 Mar 2009 03:33:03 -0500 |
| |
Hi Frederic,
On Mon, 2009-03-23 at 00:18 +0100, Frederic Weisbecker wrote: > Note: depends on "tracing/events: don't use wake up for events" > > When we want to filter an event, the filter test is done after > the event is commited to the ring-buffer to be discarded later if > needed. > > But a reader could be reading this event while we are trying to discard > it. Other kind of racy events can even happen because the event is > commited and can be read and/or consumed. > > What we want is to discard the event before committing it. >
Thanks for fixing this - I had intend on doing this, but it completely slipped my mind.
Thanks for all your other comments and fixes too...
Tom
> v2: add a reported-by Steven Rostedt > > Reported-by: Steven Rostedt <rostedt@goodmis.org> > Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> > --- > kernel/trace/trace_events_stage_3.h | 5 +++-- > 1 files changed, 3 insertions(+), 2 deletions(-) > > diff --git a/kernel/trace/trace_events_stage_3.h b/kernel/trace/trace_events_stage_3.h > index 9a3bd49..9d2fa78 100644 > --- a/kernel/trace/trace_events_stage_3.h > +++ b/kernel/trace/trace_events_stage_3.h > @@ -222,10 +222,11 @@ static void ftrace_raw_event_##call(proto) \ > \ > assign; \ > \ > - trace_nowake_buffer_unlock_commit(event, irq_flags, pc); \ > - \ > if (call->preds && !filter_match_preds(call, entry)) \ > ring_buffer_event_discard(event); \ > + \ > + trace_nowake_buffer_unlock_commit(event, irq_flags, pc); \ > + \ > } \ > \ > static int ftrace_raw_reg_event_##call(void) \
| |