powerpc: use probe_user_read() and probe_user_write()
Instead of opencoding, use probe_user_read() to failessly read a user location and probe_user_write() for writing to user. Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/e041f5eedb23f09ab553be8a91c3de2087147320.1579800517.git.christophe.leroy@c-s.fr
This commit is contained in:

committed by
Michael Ellerman

parent
1e3531982e
commit
def0bfdbd6
@@ -1277,16 +1277,6 @@ void show_user_instructions(struct pt_regs *regs)
|
||||
|
||||
pc = regs->nip - (NR_INSN_TO_PRINT * 3 / 4 * sizeof(int));
|
||||
|
||||
/*
|
||||
* Make sure the NIP points at userspace, not kernel text/data or
|
||||
* elsewhere.
|
||||
*/
|
||||
if (!__access_ok(pc, NR_INSN_TO_PRINT * sizeof(int), USER_DS)) {
|
||||
pr_info("%s[%d]: Bad NIP, not dumping instructions.\n",
|
||||
current->comm, current->pid);
|
||||
return;
|
||||
}
|
||||
|
||||
seq_buf_init(&s, buf, sizeof(buf));
|
||||
|
||||
while (n) {
|
||||
@@ -1297,7 +1287,7 @@ void show_user_instructions(struct pt_regs *regs)
|
||||
for (i = 0; i < 8 && n; i++, n--, pc += sizeof(int)) {
|
||||
int instr;
|
||||
|
||||
if (probe_kernel_address((const void *)pc, instr)) {
|
||||
if (probe_user_read(&instr, (void __user *)pc, sizeof(instr))) {
|
||||
seq_buf_printf(&s, "XXXXXXXX ");
|
||||
continue;
|
||||
}
|
||||
|
Reference in New Issue
Block a user