diff options
author | Mark Brown <broonie@kernel.org> | 2018-05-18 11:44:19 +0100 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2018-05-18 11:44:19 +0100 |
commit | 0e7fcfff8dc3b5f08f0bee84ce00d3234992e0d2 (patch) | |
tree | 26197742be1599e1fb8aa38cde3f0a2e7526d20d /arch/x86/kernel/cpu/perf_event_msr.c | |
parent | 2da9deac1e123ce8f9c22919f9f49b3a50d0c3fd (diff) | |
parent | 69847b97f21141c2d4f6e9c1b22d932b7add3182 (diff) |
Merge tag 'v4.4.132' into linux-linaro-lsk-v4.4
This is the 4.4.132 stable release
Diffstat (limited to 'arch/x86/kernel/cpu/perf_event_msr.c')
-rw-r--r-- | arch/x86/kernel/cpu/perf_event_msr.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/arch/x86/kernel/cpu/perf_event_msr.c b/arch/x86/kernel/cpu/perf_event_msr.c index ec863b9a9f78..067427384a63 100644 --- a/arch/x86/kernel/cpu/perf_event_msr.c +++ b/arch/x86/kernel/cpu/perf_event_msr.c @@ -1,4 +1,5 @@ #include <linux/perf_event.h> +#include <linux/nospec.h> enum perf_msr_id { PERF_MSR_TSC = 0, @@ -115,9 +116,6 @@ static int msr_event_init(struct perf_event *event) if (event->attr.type != event->pmu->type) return -ENOENT; - if (cfg >= PERF_MSR_EVENT_MAX) - return -EINVAL; - /* unsupported modes and filters */ if (event->attr.exclude_user || event->attr.exclude_kernel || @@ -128,6 +126,11 @@ static int msr_event_init(struct perf_event *event) event->attr.sample_period) /* no sampling */ return -EINVAL; + if (cfg >= PERF_MSR_EVENT_MAX) + return -EINVAL; + + cfg = array_index_nospec((unsigned long)cfg, PERF_MSR_EVENT_MAX); + if (!msr[cfg].attr) return -EINVAL; |