aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiri Olsa <jolsa@kernel.org>2018-04-15 05:23:50 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2018-04-17 08:47:39 -0400
commit78b562fbfa2cf0a9fcb23c3154756b690f4905c1 (patch)
tree4b2a92fe7d29a3ee696b16d7f035c7ba88c1101c
parent038586c34301578e538f6c5aa79ca82bce1b9152 (diff)
perf: Return proper values for user stack errors
Return immediately when we find issue in the user stack checks. The error value could get overwritten by following check for PERF_SAMPLE_REGS_INTR. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Andi Kleen <andi@firstfloor.org> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: syzkaller-bugs@googlegroups.com Cc: x86@kernel.org Fixes: 60e2364e60e8 ("perf: Add ability to sample machine state on interrupt") Link: http://lkml.kernel.org/r/20180415092352.12403-1-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r--kernel/events/core.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/events/core.c b/kernel/events/core.c
index 1bae80aaabfb..67612ce359ad 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -10209,9 +10209,9 @@ static int perf_copy_attr(struct perf_event_attr __user *uattr,
10209 * __u16 sample size limit. 10209 * __u16 sample size limit.
10210 */ 10210 */
10211 if (attr->sample_stack_user >= USHRT_MAX) 10211 if (attr->sample_stack_user >= USHRT_MAX)
10212 ret = -EINVAL; 10212 return -EINVAL;
10213 else if (!IS_ALIGNED(attr->sample_stack_user, sizeof(u64))) 10213 else if (!IS_ALIGNED(attr->sample_stack_user, sizeof(u64)))
10214 ret = -EINVAL; 10214 return -EINVAL;
10215 } 10215 }
10216 10216
10217 if (!attr->sample_max_stack) 10217 if (!attr->sample_max_stack)