diff options
| -rw-r--r-- | arch/x86_64/kernel/kprobes.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/x86_64/kernel/kprobes.c b/arch/x86_64/kernel/kprobes.c index 1eaa5dae6174..fa1d19ca700a 100644 --- a/arch/x86_64/kernel/kprobes.c +++ b/arch/x86_64/kernel/kprobes.c | |||
| @@ -514,13 +514,13 @@ static void __kprobes resume_execution(struct kprobe *p, | |||
| 514 | *tos = orig_rip + (*tos - copy_rip); | 514 | *tos = orig_rip + (*tos - copy_rip); |
| 515 | break; | 515 | break; |
| 516 | case 0xff: | 516 | case 0xff: |
| 517 | if ((*insn & 0x30) == 0x10) { | 517 | if ((insn[1] & 0x30) == 0x10) { |
| 518 | /* call absolute, indirect */ | 518 | /* call absolute, indirect */ |
| 519 | /* Fix return addr; rip is correct. */ | 519 | /* Fix return addr; rip is correct. */ |
| 520 | next_rip = regs->rip; | 520 | next_rip = regs->rip; |
| 521 | *tos = orig_rip + (*tos - copy_rip); | 521 | *tos = orig_rip + (*tos - copy_rip); |
| 522 | } else if (((*insn & 0x31) == 0x20) || /* jmp near, absolute indirect */ | 522 | } else if (((insn[1] & 0x31) == 0x20) || /* jmp near, absolute indirect */ |
| 523 | ((*insn & 0x31) == 0x21)) { /* jmp far, absolute indirect */ | 523 | ((insn[1] & 0x31) == 0x21)) { /* jmp far, absolute indirect */ |
| 524 | /* rip is correct. */ | 524 | /* rip is correct. */ |
| 525 | next_rip = regs->rip; | 525 | next_rip = regs->rip; |
| 526 | } | 526 | } |
