diff options
author | Ingo Molnar <mingo@kernel.org> | 2018-10-23 12:30:19 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2018-10-23 12:30:19 +0200 |
commit | dda93b45389f025fd3422d22cc31cc1ea6040305 (patch) | |
tree | 44a856744843e24ed1baf6ca4edb1be04809a606 /arch/powerpc/kernel/process.c | |
parent | 2e62024c265aa69315ed02835623740030435380 (diff) | |
parent | b61b8bba18fe2b63d38fdaf9b83de25e2d787dfe (diff) |
Merge branch 'x86/cache' into perf/core, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/powerpc/kernel/process.c')
-rw-r--r-- | arch/powerpc/kernel/process.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index 913c5725cdb2..bb6ac471a784 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c @@ -1306,6 +1306,16 @@ void show_user_instructions(struct pt_regs *regs) pc = regs->nip - (instructions_to_print * 3 / 4 * sizeof(int)); + /* + * Make sure the NIP points at userspace, not kernel text/data or + * elsewhere. + */ + if (!__access_ok(pc, instructions_to_print * sizeof(int), USER_DS)) { + pr_info("%s[%d]: Bad NIP, not dumping instructions.\n", + current->comm, current->pid); + return; + } + pr_info("%s[%d]: code: ", current->comm, current->pid); for (i = 0; i < instructions_to_print; i++) { |