Messages in this thread | | | Subject | Re: [RFC][PATCH 3/4] tracing: add per-event filtering | From | Tom Zanussi <> | Date | Wed, 18 Mar 2009 01:06:50 -0500 |
| |
On Tue, 2009-03-17 at 21:37 -0400, Steven Rostedt wrote: > > > On Tue, 17 Mar 2009, Tom Zanussi wrote: > > diff --git a/kernel/trace/trace_events_stage_3.h b/kernel/trace/trace_events_stage_3.h > > index 30627d8..d556274 100644 > > --- a/kernel/trace/trace_events_stage_3.h > > +++ b/kernel/trace/trace_events_stage_3.h > > @@ -154,6 +154,7 @@ static struct ftrace_event_call event_##call; \ > > \ > > static void ftrace_raw_event_##call(proto) \ > > { \ > > + struct ftrace_event_call *call = &event_##call; \ > > struct ring_buffer_event *event; \ > > struct ftrace_raw_##call *entry; \ > > unsigned long irq_flags; \ > > @@ -172,6 +173,9 @@ static void ftrace_raw_event_##call(proto) \ > > assign; \ > > \ > > trace_current_buffer_unlock_commit(event, irq_flags, pc); \ > > I have a concern hear about races. Once the commit happens, there's > nothing protecting us from being preempted. The reader could in fact come > in and consume the commit, and a new write may happen, and this discard > will corrupt the data in the buffer. Also in overwrite mode, the writer > itself can over write this. > > Would you be able to move the above unlock_commit after this. > I'll make the necessary changes in the commit to check for discarded data. >
Yeah, I had meant to do that, but was having enough trouble with the ring-buffer stuff that I wanted to avoid wondering what might happen if I discarded an uncommitted event at that point.
I'll make that change in the next version.
Tom
> Thanks, > > -- Steve > > > > > + > \ > + if (call->preds && !filter_match_preds(call, entry)) \ > > + rb_event_discard(event); \ > > } \ > > \ > > static int ftrace_raw_reg_event_##call(void) \ > > -- > > 1.5.6.3 > > > > > > > > > > > > > >
| |