mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
kprobes: Verify jprobe entry point
Verify jprobe's entry point is a function entry point using kallsyms' offset value. Signed-off-by: Namhyung Kim <[email protected]> Acked-by: Masami Hiramatsu <[email protected]> LKML-Reference: <[email protected]> Signed-off-by: Ingo Molnar <[email protected]>
This commit is contained in:
parent
edbaadbe42
commit
05662bdb64
1 changed files with 9 additions and 5 deletions
|
|
@ -1339,14 +1339,18 @@ int __kprobes register_jprobes(struct jprobe **jps, int num)
|
|||
if (num <= 0)
|
||||
return -EINVAL;
|
||||
for (i = 0; i < num; i++) {
|
||||
unsigned long addr;
|
||||
unsigned long addr, offset;
|
||||
jp = jps[i];
|
||||
addr = arch_deref_entry_point(jp->entry);
|
||||
|
||||
/* Todo: Verify probepoint is a function entry point */
|
||||
jp->kp.pre_handler = setjmp_pre_handler;
|
||||
jp->kp.break_handler = longjmp_break_handler;
|
||||
ret = register_kprobe(&jp->kp);
|
||||
/* Verify probepoint is a function entry point */
|
||||
if (kallsyms_lookup_size_offset(addr, NULL, &offset) &&
|
||||
offset == 0) {
|
||||
jp->kp.pre_handler = setjmp_pre_handler;
|
||||
jp->kp.break_handler = longjmp_break_handler;
|
||||
ret = register_kprobe(&jp->kp);
|
||||
} else
|
||||
ret = -EINVAL;
|
||||
|
||||
if (ret < 0) {
|
||||
if (i > 0)
|
||||
|
|
|
|||
Loading…
Reference in a new issue