Messages in this thread | | | Date | Thu, 03 Jul 2014 13:59:53 +0800 | From | "Yan, Zheng" <> | Subject | Re: [PATCH V4 07/16] perf, x86: track number of events that use LBR callstack |
| |
On 07/02/2014 06:21 PM, Peter Zijlstra wrote: > On Mon, Jun 30, 2014 at 04:50:44PM +0800, Yan, Zheng wrote: >> +static inline bool branch_user_callstack(unsigned br_sel) >> +{ >> + return (br_sel & X86_BR_USER) && (br_sel & X86_BR_CALL_STACK); >> +} >> + >> void intel_pmu_lbr_enable(struct perf_event *event) >> { >> struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); >> + struct x86_perf_task_context *task_ctx; >> >> if (!x86_pmu.lbr_nr) >> return; >> @@ -214,6 +220,10 @@ void intel_pmu_lbr_enable(struct perf_event *event) >> } >> cpuc->br_sel = event->hw.branch_reg.reg; >> >> + task_ctx = event->ctx ? event->ctx->task_ctx_data : NULL; >> + if (branch_user_callstack(cpuc->br_sel)) >> + task_ctx->lbr_callstack_users++; >> + > > So what happens if we make a per-cpu event which satisfies > branch_user_callstack() ? >
So far only per-process event can satisfy branch_user_callstack(). I will fix the potential null pointer dereference.
Regards Yan,Zheng
-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |