diff --git a/arch/arm/mach-msm/perf_debug.c b/arch/arm/mach-msm/perf_debug.c index b65068fcc74..aaba9130f0f 100644 --- a/arch/arm/mach-msm/perf_debug.c +++ b/arch/arm/mach-msm/perf_debug.c @@ -45,6 +45,7 @@ static char *descriptions = "20 msm: perf: set filter bits for cycle counter on krait\n" "21 Perf: Fix hrtimer operation across hotplug\n" "22 Perf: add perf user-mode permissions\n" + "23 Perf: Add event type check in hrtimer hotplug fix\n" ; static ssize_t desc_read(struct file *fp, char __user *buf, diff --git a/kernel/events/core.c b/kernel/events/core.c index 47ece6c9365..51b4c6a1227 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -7481,7 +7481,8 @@ static void __perf_event_stop_swclock(void *__info) struct perf_event *event, *tmp; list_for_each_entry_safe(event, tmp, &ctx->event_list, event_entry) { - if (event->attr.config == PERF_COUNT_SW_CPU_CLOCK) + if (event->attr.config == PERF_COUNT_SW_CPU_CLOCK && + event->attr.type == PERF_TYPE_SOFTWARE) cpu_clock_event_stop(event, 0); } } @@ -7529,7 +7530,9 @@ static void perf_event_start_swclock(int cpu) list_for_each_entry_safe(event, tmp, &ctx->event_list, event_entry) { if (event->attr.config == - PERF_COUNT_SW_CPU_CLOCK) + PERF_COUNT_SW_CPU_CLOCK && + event->attr.type == + PERF_TYPE_SOFTWARE) cpu_clock_event_start(event, 0); } }