powerpc: Rename probe_kernel_read_inst()
When probe_kernel_read_inst() was created, it was to mimic probe_kernel_read() function. Since then, probe_kernel_read() has been renamed copy_from_kernel_nofault(). Rename probe_kernel_read_inst() into copy_inst_from_kernel_nofault(). Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/b783d1f7cdb8914992384a669a2af57051b6bdcf.1618405715.git.christophe.leroy@csgroup.eu
This commit is contained in:
committed by
Michael Ellerman
parent
6449078d50
commit
41d6cf68b5
@@ -178,7 +178,6 @@ static inline char *__ppc_inst_as_str(char str[PPC_INST_STR_LEN], struct ppc_ins
|
|||||||
__str; \
|
__str; \
|
||||||
})
|
})
|
||||||
|
|
||||||
int probe_kernel_read_inst(struct ppc_inst *inst,
|
int copy_inst_from_kernel_nofault(struct ppc_inst *inst, struct ppc_inst *src);
|
||||||
struct ppc_inst *src);
|
|
||||||
|
|
||||||
#endif /* _ASM_POWERPC_INST_H */
|
#endif /* _ASM_POWERPC_INST_H */
|
||||||
|
|||||||
@@ -305,7 +305,7 @@ int fix_alignment(struct pt_regs *regs)
|
|||||||
int r, type;
|
int r, type;
|
||||||
|
|
||||||
if (is_kernel_addr(regs->nip))
|
if (is_kernel_addr(regs->nip))
|
||||||
r = probe_kernel_read_inst(&instr, (void *)regs->nip);
|
r = copy_inst_from_kernel_nofault(&instr, (void *)regs->nip);
|
||||||
else
|
else
|
||||||
r = __get_user_instr(instr, (void __user *)regs->nip);
|
r = __get_user_instr(instr, (void __user *)regs->nip);
|
||||||
|
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ ftrace_modify_code(unsigned long ip, struct ppc_inst old, struct ppc_inst new)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* read the text we want to modify */
|
/* read the text we want to modify */
|
||||||
if (probe_kernel_read_inst(&replaced, (void *)ip))
|
if (copy_inst_from_kernel_nofault(&replaced, (void *)ip))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
/* Make sure it is what we expect it to be */
|
/* Make sure it is what we expect it to be */
|
||||||
@@ -130,7 +130,7 @@ __ftrace_make_nop(struct module *mod,
|
|||||||
struct ppc_inst op, pop;
|
struct ppc_inst op, pop;
|
||||||
|
|
||||||
/* read where this goes */
|
/* read where this goes */
|
||||||
if (probe_kernel_read_inst(&op, (void *)ip)) {
|
if (copy_inst_from_kernel_nofault(&op, (void *)ip)) {
|
||||||
pr_err("Fetching opcode failed.\n");
|
pr_err("Fetching opcode failed.\n");
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
}
|
}
|
||||||
@@ -164,7 +164,7 @@ __ftrace_make_nop(struct module *mod,
|
|||||||
/* When using -mkernel_profile there is no load to jump over */
|
/* When using -mkernel_profile there is no load to jump over */
|
||||||
pop = ppc_inst(PPC_INST_NOP);
|
pop = ppc_inst(PPC_INST_NOP);
|
||||||
|
|
||||||
if (probe_kernel_read_inst(&op, (void *)(ip - 4))) {
|
if (copy_inst_from_kernel_nofault(&op, (void *)(ip - 4))) {
|
||||||
pr_err("Fetching instruction at %lx failed.\n", ip - 4);
|
pr_err("Fetching instruction at %lx failed.\n", ip - 4);
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
}
|
}
|
||||||
@@ -197,7 +197,7 @@ __ftrace_make_nop(struct module *mod,
|
|||||||
* Check what is in the next instruction. We can see ld r2,40(r1), but
|
* Check what is in the next instruction. We can see ld r2,40(r1), but
|
||||||
* on first pass after boot we will see mflr r0.
|
* on first pass after boot we will see mflr r0.
|
||||||
*/
|
*/
|
||||||
if (probe_kernel_read_inst(&op, (void *)(ip + 4))) {
|
if (copy_inst_from_kernel_nofault(&op, (void *)(ip + 4))) {
|
||||||
pr_err("Fetching op failed.\n");
|
pr_err("Fetching op failed.\n");
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
}
|
}
|
||||||
@@ -349,7 +349,7 @@ static int setup_mcount_compiler_tramp(unsigned long tramp)
|
|||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
/* New trampoline -- read where this goes */
|
/* New trampoline -- read where this goes */
|
||||||
if (probe_kernel_read_inst(&op, (void *)tramp)) {
|
if (copy_inst_from_kernel_nofault(&op, (void *)tramp)) {
|
||||||
pr_debug("Fetching opcode failed.\n");
|
pr_debug("Fetching opcode failed.\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@@ -399,7 +399,7 @@ static int __ftrace_make_nop_kernel(struct dyn_ftrace *rec, unsigned long addr)
|
|||||||
struct ppc_inst op;
|
struct ppc_inst op;
|
||||||
|
|
||||||
/* Read where this goes */
|
/* Read where this goes */
|
||||||
if (probe_kernel_read_inst(&op, (void *)ip)) {
|
if (copy_inst_from_kernel_nofault(&op, (void *)ip)) {
|
||||||
pr_err("Fetching opcode failed.\n");
|
pr_err("Fetching opcode failed.\n");
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
}
|
}
|
||||||
@@ -526,10 +526,10 @@ __ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr)
|
|||||||
struct module *mod = rec->arch.mod;
|
struct module *mod = rec->arch.mod;
|
||||||
|
|
||||||
/* read where this goes */
|
/* read where this goes */
|
||||||
if (probe_kernel_read_inst(op, ip))
|
if (copy_inst_from_kernel_nofault(op, ip))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
if (probe_kernel_read_inst(op + 1, ip + 4))
|
if (copy_inst_from_kernel_nofault(op + 1, ip + 4))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
if (!expected_nop_sequence(ip, op[0], op[1])) {
|
if (!expected_nop_sequence(ip, op[0], op[1])) {
|
||||||
@@ -592,7 +592,7 @@ __ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr)
|
|||||||
unsigned long ip = rec->ip;
|
unsigned long ip = rec->ip;
|
||||||
|
|
||||||
/* read where this goes */
|
/* read where this goes */
|
||||||
if (probe_kernel_read_inst(&op, (void *)ip))
|
if (copy_inst_from_kernel_nofault(&op, (void *)ip))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
/* It should be pointing to a nop */
|
/* It should be pointing to a nop */
|
||||||
@@ -648,7 +648,7 @@ static int __ftrace_make_call_kernel(struct dyn_ftrace *rec, unsigned long addr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Make sure we have a nop */
|
/* Make sure we have a nop */
|
||||||
if (probe_kernel_read_inst(&op, ip)) {
|
if (copy_inst_from_kernel_nofault(&op, ip)) {
|
||||||
pr_err("Unable to read ftrace location %p\n", ip);
|
pr_err("Unable to read ftrace location %p\n", ip);
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
}
|
}
|
||||||
@@ -726,7 +726,7 @@ __ftrace_modify_call(struct dyn_ftrace *rec, unsigned long old_addr,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* read where this goes */
|
/* read where this goes */
|
||||||
if (probe_kernel_read_inst(&op, (void *)ip)) {
|
if (copy_inst_from_kernel_nofault(&op, (void *)ip)) {
|
||||||
pr_err("Fetching opcode failed.\n");
|
pr_err("Fetching opcode failed.\n");
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,8 +8,7 @@
|
|||||||
#include <asm/inst.h>
|
#include <asm/inst.h>
|
||||||
#include <asm/ppc-opcode.h>
|
#include <asm/ppc-opcode.h>
|
||||||
|
|
||||||
int probe_kernel_read_inst(struct ppc_inst *inst,
|
int copy_inst_from_kernel_nofault(struct ppc_inst *inst, struct ppc_inst *src)
|
||||||
struct ppc_inst *src)
|
|
||||||
{
|
{
|
||||||
unsigned int val, suffix;
|
unsigned int val, suffix;
|
||||||
int err;
|
int err;
|
||||||
|
|||||||
Reference in New Issue
Block a user