Messages in this thread | | | Date | Wed, 31 Jul 2019 18:21:06 +0200 | From | Peter Zijlstra <> | Subject | Re: [PATCH v3 1/7] perf: Allow normal events to be sources of AUX data |
| |
On Wed, Jul 31, 2019 at 05:30:35PM +0300, Alexander Shishkin wrote: > +static void perf_put_aux_event(struct perf_event *event) > +{ > + struct perf_event_context *ctx = event->ctx; > + struct perf_cpu_context *cpuctx = __get_cpu_context(ctx); > + struct perf_event *iter = NULL; > + > + /* > + * If event uses aux_event tear down the link > + */ > + if (event->aux_event) { > + put_event(event->aux_event); > + event->aux_event = NULL;
Those lines should probably be reversed; put_event() should be done after clearing the link.
It probably doesn't matter, but it is confusing.
> + return; > + } > + > + /* > + * If the event is an aux_event, tear down all links to > + * it from other events. > + */ > + for_each_sibling_event(iter, event->group_leader) { > + if (iter->aux_event != event) > + continue; > + > + iter->aux_event = NULL; > + put_event(event); > + > + /* > + * If it's ACTIVE, schedule it out. It won't schedule > + * again because !aux_event. > + */ > + event_sched_out(iter, cpuctx, ctx); > + } > +}
| |