diff options
author | André Fabian Silva Delgado <emulatorman@parabola.nu> | 2016-12-13 20:16:40 -0300 |
---|---|---|
committer | André Fabian Silva Delgado <emulatorman@parabola.nu> | 2016-12-13 20:16:40 -0300 |
commit | 6baeafd1f2a54ca041ff71778ebda9fac75aad12 (patch) | |
tree | 57d2d68fa5d1d91f57cd7fcf0aed0a97892cc8cc /arch/x86/events | |
parent | 189382f7a338c02b448ab27e1d5566e052165dc8 (diff) |
Linux-libre 4.8.14-gnuHEADpck-4.8.14-gnumaster
Diffstat (limited to 'arch/x86/events')
-rw-r--r-- | arch/x86/events/core.c | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c index d0efb5cb1..a4e070a51 100644 --- a/arch/x86/events/core.c +++ b/arch/x86/events/core.c @@ -2344,7 +2344,7 @@ perf_callchain_user32(struct pt_regs *regs, struct perf_callchain_entry_ctx *ent frame.next_frame = 0; frame.return_address = 0; - if (!access_ok(VERIFY_READ, fp, 8)) + if (!valid_user_frame(fp, sizeof(frame))) break; bytes = __copy_from_user_nmi(&frame.next_frame, fp, 4); @@ -2354,9 +2354,6 @@ perf_callchain_user32(struct pt_regs *regs, struct perf_callchain_entry_ctx *ent if (bytes != 0) break; - if (!valid_user_frame(fp, sizeof(frame))) - break; - perf_callchain_store(entry, cs_base + frame.return_address); fp = compat_ptr(ss_base + frame.next_frame); } @@ -2405,7 +2402,7 @@ perf_callchain_user(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs frame.next_frame = NULL; frame.return_address = 0; - if (!access_ok(VERIFY_READ, fp, sizeof(*fp) * 2)) + if (!valid_user_frame(fp, sizeof(frame))) break; bytes = __copy_from_user_nmi(&frame.next_frame, fp, sizeof(*fp)); @@ -2415,9 +2412,6 @@ perf_callchain_user(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs if (bytes != 0) break; - if (!valid_user_frame(fp, sizeof(frame))) - break; - perf_callchain_store(entry, frame.return_address); fp = (void __user *)frame.next_frame; } |