|
@@ -102,7 +102,7 @@ int __kprobes kprobe_handle_illslot(unsigned long pc)
|
|
|
|
|
|
void __kprobes arch_remove_kprobe(struct kprobe *p)
|
|
|
{
|
|
|
- struct kprobe *saved = &__get_cpu_var(saved_next_opcode);
|
|
|
+ struct kprobe *saved = this_cpu_ptr(&saved_next_opcode);
|
|
|
|
|
|
if (saved->addr) {
|
|
|
arch_disarm_kprobe(p);
|
|
@@ -111,7 +111,7 @@ void __kprobes arch_remove_kprobe(struct kprobe *p)
|
|
|
saved->addr = NULL;
|
|
|
saved->opcode = 0;
|
|
|
|
|
|
- saved = &__get_cpu_var(saved_next_opcode2);
|
|
|
+ saved = this_cpu_ptr(&saved_next_opcode2);
|
|
|
if (saved->addr) {
|
|
|
arch_disarm_kprobe(saved);
|
|
|
|
|
@@ -129,14 +129,14 @@ static void __kprobes save_previous_kprobe(struct kprobe_ctlblk *kcb)
|
|
|
|
|
|
static void __kprobes restore_previous_kprobe(struct kprobe_ctlblk *kcb)
|
|
|
{
|
|
|
- __get_cpu_var(current_kprobe) = kcb->prev_kprobe.kp;
|
|
|
+ __this_cpu_write(current_kprobe, kcb->prev_kprobe.kp);
|
|
|
kcb->kprobe_status = kcb->prev_kprobe.status;
|
|
|
}
|
|
|
|
|
|
static void __kprobes set_current_kprobe(struct kprobe *p, struct pt_regs *regs,
|
|
|
struct kprobe_ctlblk *kcb)
|
|
|
{
|
|
|
- __get_cpu_var(current_kprobe) = p;
|
|
|
+ __this_cpu_write(current_kprobe, p);
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -146,15 +146,15 @@ static void __kprobes set_current_kprobe(struct kprobe *p, struct pt_regs *regs,
|
|
|
*/
|
|
|
static void __kprobes prepare_singlestep(struct kprobe *p, struct pt_regs *regs)
|
|
|
{
|
|
|
- __get_cpu_var(saved_current_opcode).addr = (kprobe_opcode_t *)regs->pc;
|
|
|
+ __this_cpu_write(saved_current_opcode.addr, (kprobe_opcode_t *)regs->pc);
|
|
|
|
|
|
if (p != NULL) {
|
|
|
struct kprobe *op1, *op2;
|
|
|
|
|
|
arch_disarm_kprobe(p);
|
|
|
|
|
|
- op1 = &__get_cpu_var(saved_next_opcode);
|
|
|
- op2 = &__get_cpu_var(saved_next_opcode2);
|
|
|
+ op1 = this_cpu_ptr(&saved_next_opcode);
|
|
|
+ op2 = this_cpu_ptr(&saved_next_opcode2);
|
|
|
|
|
|
if (OPCODE_JSR(p->opcode) || OPCODE_JMP(p->opcode)) {
|
|
|
unsigned int reg_nr = ((p->opcode >> 8) & 0x000F);
|
|
@@ -249,7 +249,7 @@ static int __kprobes kprobe_handler(struct pt_regs *regs)
|
|
|
kcb->kprobe_status = KPROBE_REENTER;
|
|
|
return 1;
|
|
|
} else {
|
|
|
- p = __get_cpu_var(current_kprobe);
|
|
|
+ p = __this_cpu_read(current_kprobe);
|
|
|
if (p->break_handler && p->break_handler(p, regs)) {
|
|
|
goto ss_probe;
|
|
|
}
|
|
@@ -336,9 +336,9 @@ int __kprobes trampoline_probe_handler(struct kprobe *p, struct pt_regs *regs)
|
|
|
continue;
|
|
|
|
|
|
if (ri->rp && ri->rp->handler) {
|
|
|
- __get_cpu_var(current_kprobe) = &ri->rp->kp;
|
|
|
+ __this_cpu_write(current_kprobe, &ri->rp->kp);
|
|
|
ri->rp->handler(ri, regs);
|
|
|
- __get_cpu_var(current_kprobe) = NULL;
|
|
|
+ __this_cpu_write(current_kprobe, NULL);
|
|
|
}
|
|
|
|
|
|
orig_ret_address = (unsigned long)ri->ret_addr;
|
|
@@ -383,19 +383,19 @@ static int __kprobes post_kprobe_handler(struct pt_regs *regs)
|
|
|
cur->post_handler(cur, regs, 0);
|
|
|
}
|
|
|
|
|
|
- p = &__get_cpu_var(saved_next_opcode);
|
|
|
+ p = this_cpu_ptr(&saved_next_opcode);
|
|
|
if (p->addr) {
|
|
|
arch_disarm_kprobe(p);
|
|
|
p->addr = NULL;
|
|
|
p->opcode = 0;
|
|
|
|
|
|
- addr = __get_cpu_var(saved_current_opcode).addr;
|
|
|
- __get_cpu_var(saved_current_opcode).addr = NULL;
|
|
|
+ addr = __this_cpu_read(saved_current_opcode.addr);
|
|
|
+ __this_cpu_write(saved_current_opcode.addr, NULL);
|
|
|
|
|
|
p = get_kprobe(addr);
|
|
|
arch_arm_kprobe(p);
|
|
|
|
|
|
- p = &__get_cpu_var(saved_next_opcode2);
|
|
|
+ p = this_cpu_ptr(&saved_next_opcode2);
|
|
|
if (p->addr) {
|
|
|
arch_disarm_kprobe(p);
|
|
|
p->addr = NULL;
|
|
@@ -511,7 +511,7 @@ int __kprobes kprobe_exceptions_notify(struct notifier_block *self,
|
|
|
if (kprobe_handler(args->regs)) {
|
|
|
ret = NOTIFY_STOP;
|
|
|
} else {
|
|
|
- p = __get_cpu_var(current_kprobe);
|
|
|
+ p = __this_cpu_read(current_kprobe);
|
|
|
if (p->break_handler &&
|
|
|
p->break_handler(p, args->regs))
|
|
|
ret = NOTIFY_STOP;
|