Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
kprobes.c
Go to the documentation of this file.
1 /*
2  * Kernel Probes (KProbes)
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17  *
18  * Copyright IBM Corp. 2002, 2006
19  *
20  * s390 port, used ppc64 as template. Mike Grundy <[email protected]>
21  */
22 
23 #include <linux/kprobes.h>
24 #include <linux/ptrace.h>
25 #include <linux/preempt.h>
26 #include <linux/stop_machine.h>
27 #include <linux/kdebug.h>
28 #include <linux/uaccess.h>
29 #include <asm/cacheflush.h>
30 #include <asm/sections.h>
31 #include <linux/module.h>
32 #include <linux/slab.h>
33 #include <linux/hardirq.h>
34 
35 DEFINE_PER_CPU(struct kprobe *, current_kprobe);
37 
39 
40 static int __kprobes is_prohibited_opcode(kprobe_opcode_t *insn)
41 {
42  switch (insn[0] >> 8) {
43  case 0x0c: /* bassm */
44  case 0x0b: /* bsm */
45  case 0x83: /* diag */
46  case 0x44: /* ex */
47  case 0xac: /* stnsm */
48  case 0xad: /* stosm */
49  return -EINVAL;
50  }
51  switch (insn[0]) {
52  case 0x0101: /* pr */
53  case 0xb25a: /* bsa */
54  case 0xb240: /* bakr */
55  case 0xb258: /* bsg */
56  case 0xb218: /* pc */
57  case 0xb228: /* pt */
58  case 0xb98d: /* epsw */
59  return -EINVAL;
60  }
61  return 0;
62 }
63 
64 static int __kprobes get_fixup_type(kprobe_opcode_t *insn)
65 {
66  /* default fixup method */
67  int fixup = FIXUP_PSW_NORMAL;
68 
69  switch (insn[0] >> 8) {
70  case 0x05: /* balr */
71  case 0x0d: /* basr */
72  fixup = FIXUP_RETURN_REGISTER;
73  /* if r2 = 0, no branch will be taken */
74  if ((insn[0] & 0x0f) == 0)
75  fixup |= FIXUP_BRANCH_NOT_TAKEN;
76  break;
77  case 0x06: /* bctr */
78  case 0x07: /* bcr */
79  fixup = FIXUP_BRANCH_NOT_TAKEN;
80  break;
81  case 0x45: /* bal */
82  case 0x4d: /* bas */
83  fixup = FIXUP_RETURN_REGISTER;
84  break;
85  case 0x47: /* bc */
86  case 0x46: /* bct */
87  case 0x86: /* bxh */
88  case 0x87: /* bxle */
89  fixup = FIXUP_BRANCH_NOT_TAKEN;
90  break;
91  case 0x82: /* lpsw */
92  fixup = FIXUP_NOT_REQUIRED;
93  break;
94  case 0xb2: /* lpswe */
95  if ((insn[0] & 0xff) == 0xb2)
96  fixup = FIXUP_NOT_REQUIRED;
97  break;
98  case 0xa7: /* bras */
99  if ((insn[0] & 0x0f) == 0x05)
100  fixup |= FIXUP_RETURN_REGISTER;
101  break;
102  case 0xc0:
103  if ((insn[0] & 0x0f) == 0x00 || /* larl */
104  (insn[0] & 0x0f) == 0x05) /* brasl */
105  fixup |= FIXUP_RETURN_REGISTER;
106  break;
107  case 0xeb:
108  if ((insn[2] & 0xff) == 0x44 || /* bxhg */
109  (insn[2] & 0xff) == 0x45) /* bxleg */
110  fixup = FIXUP_BRANCH_NOT_TAKEN;
111  break;
112  case 0xe3: /* bctg */
113  if ((insn[2] & 0xff) == 0x46)
114  fixup = FIXUP_BRANCH_NOT_TAKEN;
115  break;
116  }
117  return fixup;
118 }
119 
121 {
122  if ((unsigned long) p->addr & 0x01)
123  return -EINVAL;
124 
125  /* Make sure the probe isn't going on a difficult instruction */
126  if (is_prohibited_opcode(p->addr))
127  return -EINVAL;
128 
129  p->opcode = *p->addr;
130  memcpy(p->ainsn.insn, p->addr, ((p->opcode >> 14) + 3) & -2);
131 
132  return 0;
133 }
134 
138 };
139 
140 static int __kprobes swap_instruction(void *aref)
141 {
142  struct kprobe_ctlblk *kcb = get_kprobe_ctlblk();
143  unsigned long status = kcb->kprobe_status;
144  struct ins_replace_args *args = aref;
145 
147  probe_kernel_write(args->ptr, &args->opcode, sizeof(args->opcode));
148  kcb->kprobe_status = status;
149  return 0;
150 }
151 
153 {
154  struct ins_replace_args args;
155 
156  args.ptr = p->addr;
158  stop_machine(swap_instruction, &args, NULL);
159 }
160 
162 {
163  struct ins_replace_args args;
164 
165  args.ptr = p->addr;
166  args.opcode = p->opcode;
167  stop_machine(swap_instruction, &args, NULL);
168 }
169 
171 {
172 }
173 
174 static void __kprobes enable_singlestep(struct kprobe_ctlblk *kcb,
175  struct pt_regs *regs,
176  unsigned long ip)
177 {
178  struct per_regs per_kprobe;
179 
180  /* Set up the PER control registers %cr9-%cr11 */
181  per_kprobe.control = PER_EVENT_IFETCH;
182  per_kprobe.start = ip;
183  per_kprobe.end = ip;
184 
185  /* Save control regs and psw mask */
186  __ctl_store(kcb->kprobe_saved_ctl, 9, 11);
187  kcb->kprobe_saved_imask = regs->psw.mask &
189 
190  /* Set PER control regs, turns on single step for the given address */
191  __ctl_load(per_kprobe, 9, 11);
192  regs->psw.mask |= PSW_MASK_PER;
193  regs->psw.mask &= ~(PSW_MASK_IO | PSW_MASK_EXT);
194  regs->psw.addr = ip | PSW_ADDR_AMODE;
195 }
196 
197 static void __kprobes disable_singlestep(struct kprobe_ctlblk *kcb,
198  struct pt_regs *regs,
199  unsigned long ip)
200 {
201  /* Restore control regs and psw mask, set new psw address */
202  __ctl_load(kcb->kprobe_saved_ctl, 9, 11);
203  regs->psw.mask &= ~PSW_MASK_PER;
204  regs->psw.mask |= kcb->kprobe_saved_imask;
205  regs->psw.addr = ip | PSW_ADDR_AMODE;
206 }
207 
208 /*
209  * Activate a kprobe by storing its pointer to current_kprobe. The
210  * previous kprobe is stored in kcb->prev_kprobe. A stack of up to
211  * two kprobes can be active, see KPROBE_REENTER.
212  */
213 static void __kprobes push_kprobe(struct kprobe_ctlblk *kcb, struct kprobe *p)
214 {
215  kcb->prev_kprobe.kp = __get_cpu_var(current_kprobe);
216  kcb->prev_kprobe.status = kcb->kprobe_status;
217  __get_cpu_var(current_kprobe) = p;
218 }
219 
220 /*
221  * Deactivate a kprobe by backing up to the previous state. If the
222  * current state is KPROBE_REENTER prev_kprobe.kp will be non-NULL,
223  * for any other state prev_kprobe.kp will be NULL.
224  */
225 static void __kprobes pop_kprobe(struct kprobe_ctlblk *kcb)
226 {
227  __get_cpu_var(current_kprobe) = kcb->prev_kprobe.kp;
228  kcb->kprobe_status = kcb->prev_kprobe.status;
229 }
230 
232  struct pt_regs *regs)
233 {
234  ri->ret_addr = (kprobe_opcode_t *) regs->gprs[14];
235 
236  /* Replace the return addr with trampoline addr */
237  regs->gprs[14] = (unsigned long) &kretprobe_trampoline;
238 }
239 
240 static void __kprobes kprobe_reenter_check(struct kprobe_ctlblk *kcb,
241  struct kprobe *p)
242 {
243  switch (kcb->kprobe_status) {
244  case KPROBE_HIT_SSDONE:
245  case KPROBE_HIT_ACTIVE:
247  break;
248  case KPROBE_HIT_SS:
249  case KPROBE_REENTER:
250  default:
251  /*
252  * A kprobe on the code path to single step an instruction
253  * is a BUG. The code path resides in the .kprobes.text
254  * section and is executed with interrupts disabled.
255  */
256  printk(KERN_EMERG "Invalid kprobe detected at %p.\n", p->addr);
257  dump_kprobe(p);
258  BUG();
259  }
260 }
261 
262 static int __kprobes kprobe_handler(struct pt_regs *regs)
263 {
264  struct kprobe_ctlblk *kcb;
265  struct kprobe *p;
266 
267  /*
268  * We want to disable preemption for the entire duration of kprobe
269  * processing. That includes the calls to the pre/post handlers
270  * and single stepping the kprobe instruction.
271  */
272  preempt_disable();
273  kcb = get_kprobe_ctlblk();
274  p = get_kprobe((void *)((regs->psw.addr & PSW_ADDR_INSN) - 2));
275 
276  if (p) {
277  if (kprobe_running()) {
278  /*
279  * We have hit a kprobe while another is still
280  * active. This can happen in the pre and post
281  * handler. Single step the instruction of the
282  * new probe but do not call any handler function
283  * of this secondary kprobe.
284  * push_kprobe and pop_kprobe saves and restores
285  * the currently active kprobe.
286  */
287  kprobe_reenter_check(kcb, p);
288  push_kprobe(kcb, p);
289  kcb->kprobe_status = KPROBE_REENTER;
290  } else {
291  /*
292  * If we have no pre-handler or it returned 0, we
293  * continue with single stepping. If we have a
294  * pre-handler and it returned non-zero, it prepped
295  * for calling the break_handler below on re-entry
296  * for jprobe processing, so get out doing nothing
297  * more here.
298  */
299  push_kprobe(kcb, p);
301  if (p->pre_handler && p->pre_handler(p, regs))
302  return 1;
304  }
305  enable_singlestep(kcb, regs, (unsigned long) p->ainsn.insn);
306  return 1;
307  } else if (kprobe_running()) {
308  p = __get_cpu_var(current_kprobe);
309  if (p->break_handler && p->break_handler(p, regs)) {
310  /*
311  * Continuation after the jprobe completed and
312  * caused the jprobe_return trap. The jprobe
313  * break_handler "returns" to the original
314  * function that still has the kprobe breakpoint
315  * installed. We continue with single stepping.
316  */
318  enable_singlestep(kcb, regs,
319  (unsigned long) p->ainsn.insn);
320  return 1;
321  } /* else:
322  * No kprobe at this address and the current kprobe
323  * has no break handler (no jprobe!). The kernel just
324  * exploded, let the standard trap handler pick up the
325  * pieces.
326  */
327  } /* else:
328  * No kprobe at this address and no active kprobe. The trap has
329  * not been caused by a kprobe breakpoint. The race of breakpoint
330  * vs. kprobe remove does not exist because on s390 as we use
331  * stop_machine to arm/disarm the breakpoints.
332  */
334  return 0;
335 }
336 
337 /*
338  * Function return probe trampoline:
339  * - init_kprobes() establishes a probepoint here
340  * - When the probed function returns, this probe
341  * causes the handlers to fire
342  */
343 static void __used kretprobe_trampoline_holder(void)
344 {
345  asm volatile(".global kretprobe_trampoline\n"
346  "kretprobe_trampoline: bcr 0,0\n");
347 }
348 
349 /*
350  * Called when the probe at kretprobe trampoline is hit
351  */
352 static int __kprobes trampoline_probe_handler(struct kprobe *p,
353  struct pt_regs *regs)
354 {
355  struct kretprobe_instance *ri;
356  struct hlist_head *head, empty_rp;
357  struct hlist_node *node, *tmp;
358  unsigned long flags, orig_ret_address;
359  unsigned long trampoline_address;
360  kprobe_opcode_t *correct_ret_addr;
361 
362  INIT_HLIST_HEAD(&empty_rp);
363  kretprobe_hash_lock(current, &head, &flags);
364 
365  /*
366  * It is possible to have multiple instances associated with a given
367  * task either because an multiple functions in the call path
368  * have a return probe installed on them, and/or more than one return
369  * return probe was registered for a target function.
370  *
371  * We can handle this because:
372  * - instances are always inserted at the head of the list
373  * - when multiple return probes are registered for the same
374  * function, the first instance's ret_addr will point to the
375  * real return address, and all the rest will point to
376  * kretprobe_trampoline
377  */
378  ri = NULL;
379  orig_ret_address = 0;
380  correct_ret_addr = NULL;
381  trampoline_address = (unsigned long) &kretprobe_trampoline;
382  hlist_for_each_entry_safe(ri, node, tmp, head, hlist) {
383  if (ri->task != current)
384  /* another task is sharing our hash bucket */
385  continue;
386 
387  orig_ret_address = (unsigned long) ri->ret_addr;
388 
389  if (orig_ret_address != trampoline_address)
390  /*
391  * This is the real return address. Any other
392  * instances associated with this task are for
393  * other calls deeper on the call stack
394  */
395  break;
396  }
397 
398  kretprobe_assert(ri, orig_ret_address, trampoline_address);
399 
400  correct_ret_addr = ri->ret_addr;
401  hlist_for_each_entry_safe(ri, node, tmp, head, hlist) {
402  if (ri->task != current)
403  /* another task is sharing our hash bucket */
404  continue;
405 
406  orig_ret_address = (unsigned long) ri->ret_addr;
407 
408  if (ri->rp && ri->rp->handler) {
409  ri->ret_addr = correct_ret_addr;
410  ri->rp->handler(ri, regs);
411  }
412 
413  recycle_rp_inst(ri, &empty_rp);
414 
415  if (orig_ret_address != trampoline_address)
416  /*
417  * This is the real return address. Any other
418  * instances associated with this task are for
419  * other calls deeper on the call stack
420  */
421  break;
422  }
423 
424  regs->psw.addr = orig_ret_address | PSW_ADDR_AMODE;
425 
426  pop_kprobe(get_kprobe_ctlblk());
429 
430  hlist_for_each_entry_safe(ri, node, tmp, &empty_rp, hlist) {
431  hlist_del(&ri->hlist);
432  kfree(ri);
433  }
434  /*
435  * By returning a non-zero value, we are telling
436  * kprobe_handler() that we don't want the post_handler
437  * to run (and have re-enabled preemption)
438  */
439  return 1;
440 }
441 
442 /*
443  * Called after single-stepping. p->addr is the address of the
444  * instruction whose first byte has been replaced by the "breakpoint"
445  * instruction. To avoid the SMP problems that can occur when we
446  * temporarily put back the original opcode to single-step, we
447  * single-stepped a copy of the instruction. The address of this
448  * copy is p->ainsn.insn.
449  */
450 static void __kprobes resume_execution(struct kprobe *p, struct pt_regs *regs)
451 {
452  struct kprobe_ctlblk *kcb = get_kprobe_ctlblk();
453  unsigned long ip = regs->psw.addr & PSW_ADDR_INSN;
454  int fixup = get_fixup_type(p->ainsn.insn);
455 
456  if (fixup & FIXUP_PSW_NORMAL)
457  ip += (unsigned long) p->addr - (unsigned long) p->ainsn.insn;
458 
459  if (fixup & FIXUP_BRANCH_NOT_TAKEN) {
460  int ilen = ((p->ainsn.insn[0] >> 14) + 3) & -2;
461  if (ip - (unsigned long) p->ainsn.insn == ilen)
462  ip = (unsigned long) p->addr + ilen;
463  }
464 
465  if (fixup & FIXUP_RETURN_REGISTER) {
466  int reg = (p->ainsn.insn[0] & 0xf0) >> 4;
467  regs->gprs[reg] += (unsigned long) p->addr -
468  (unsigned long) p->ainsn.insn;
469  }
470 
471  disable_singlestep(kcb, regs, ip);
472 }
473 
474 static int __kprobes post_kprobe_handler(struct pt_regs *regs)
475 {
476  struct kprobe_ctlblk *kcb = get_kprobe_ctlblk();
477  struct kprobe *p = kprobe_running();
478 
479  if (!p)
480  return 0;
481 
482  if (kcb->kprobe_status != KPROBE_REENTER && p->post_handler) {
483  kcb->kprobe_status = KPROBE_HIT_SSDONE;
484  p->post_handler(p, regs, 0);
485  }
486 
487  resume_execution(p, regs);
488  pop_kprobe(kcb);
490 
491  /*
492  * if somebody else is singlestepping across a probe point, psw mask
493  * will have PER set, in which case, continue the remaining processing
494  * of do_single_step, as if this is not a probe hit.
495  */
496  if (regs->psw.mask & PSW_MASK_PER)
497  return 0;
498 
499  return 1;
500 }
501 
502 static int __kprobes kprobe_trap_handler(struct pt_regs *regs, int trapnr)
503 {
504  struct kprobe_ctlblk *kcb = get_kprobe_ctlblk();
505  struct kprobe *p = kprobe_running();
506  const struct exception_table_entry *entry;
507 
508  switch(kcb->kprobe_status) {
509  case KPROBE_SWAP_INST:
510  /* We are here because the instruction replacement failed */
511  return 0;
512  case KPROBE_HIT_SS:
513  case KPROBE_REENTER:
514  /*
515  * We are here because the instruction being single
516  * stepped caused a page fault. We reset the current
517  * kprobe and the nip points back to the probe address
518  * and allow the page fault handler to continue as a
519  * normal page fault.
520  */
521  disable_singlestep(kcb, regs, (unsigned long) p->addr);
522  pop_kprobe(kcb);
524  break;
525  case KPROBE_HIT_ACTIVE:
526  case KPROBE_HIT_SSDONE:
527  /*
528  * We increment the nmissed count for accounting,
529  * we can also use npre/npostfault count for accouting
530  * these specific fault cases.
531  */
533 
534  /*
535  * We come here because instructions in the pre/post
536  * handler caused the page_fault, this could happen
537  * if handler tries to access user space by
538  * copy_from_user(), get_user() etc. Let the
539  * user-specified handler try to fix it first.
540  */
541  if (p->fault_handler && p->fault_handler(p, regs, trapnr))
542  return 1;
543 
544  /*
545  * In case the user-specified fault handler returned
546  * zero, try to fix up.
547  */
548  entry = search_exception_tables(regs->psw.addr & PSW_ADDR_INSN);
549  if (entry) {
550  regs->psw.addr = extable_fixup(entry) | PSW_ADDR_AMODE;
551  return 1;
552  }
553 
554  /*
555  * fixup_exception() could not handle it,
556  * Let do_page_fault() fix it.
557  */
558  break;
559  default:
560  break;
561  }
562  return 0;
563 }
564 
565 int __kprobes kprobe_fault_handler(struct pt_regs *regs, int trapnr)
566 {
567  int ret;
568 
569  if (regs->psw.mask & (PSW_MASK_IO | PSW_MASK_EXT))
571  ret = kprobe_trap_handler(regs, trapnr);
572  if (regs->psw.mask & (PSW_MASK_IO | PSW_MASK_EXT))
573  local_irq_restore(regs->psw.mask & ~PSW_MASK_PER);
574  return ret;
575 }
576 
577 /*
578  * Wrapper routine to for handling exceptions.
579  */
581  unsigned long val, void *data)
582 {
583  struct die_args *args = (struct die_args *) data;
584  struct pt_regs *regs = args->regs;
585  int ret = NOTIFY_DONE;
586 
587  if (regs->psw.mask & (PSW_MASK_IO | PSW_MASK_EXT))
589 
590  switch (val) {
591  case DIE_BPT:
592  if (kprobe_handler(regs))
593  ret = NOTIFY_STOP;
594  break;
595  case DIE_SSTEP:
596  if (post_kprobe_handler(regs))
597  ret = NOTIFY_STOP;
598  break;
599  case DIE_TRAP:
600  if (!preemptible() && kprobe_running() &&
601  kprobe_trap_handler(regs, args->trapnr))
602  ret = NOTIFY_STOP;
603  break;
604  default:
605  break;
606  }
607 
608  if (regs->psw.mask & (PSW_MASK_IO | PSW_MASK_EXT))
609  local_irq_restore(regs->psw.mask & ~PSW_MASK_PER);
610 
611  return ret;
612 }
613 
614 int __kprobes setjmp_pre_handler(struct kprobe *p, struct pt_regs *regs)
615 {
616  struct jprobe *jp = container_of(p, struct jprobe, kp);
617  struct kprobe_ctlblk *kcb = get_kprobe_ctlblk();
618  unsigned long stack;
619 
620  memcpy(&kcb->jprobe_saved_regs, regs, sizeof(struct pt_regs));
621 
622  /* setup return addr to the jprobe handler routine */
623  regs->psw.addr = (unsigned long) jp->entry | PSW_ADDR_AMODE;
624  regs->psw.mask &= ~(PSW_MASK_IO | PSW_MASK_EXT);
625 
626  /* r15 is the stack pointer */
627  stack = (unsigned long) regs->gprs[15];
628 
629  memcpy(kcb->jprobes_stack, (void *) stack, MIN_STACK_SIZE(stack));
630  return 1;
631 }
632 
634 {
635  asm volatile(".word 0x0002");
636 }
637 
638 static void __used __kprobes jprobe_return_end(void)
639 {
640  asm volatile("bcr 0,0");
641 }
642 
643 int __kprobes longjmp_break_handler(struct kprobe *p, struct pt_regs *regs)
644 {
645  struct kprobe_ctlblk *kcb = get_kprobe_ctlblk();
646  unsigned long stack;
647 
648  stack = (unsigned long) kcb->jprobe_saved_regs.gprs[15];
649 
650  /* Put the regs back */
651  memcpy(regs, &kcb->jprobe_saved_regs, sizeof(struct pt_regs));
652  /* put the stack back */
653  memcpy((void *) stack, kcb->jprobes_stack, MIN_STACK_SIZE(stack));
655  return 1;
656 }
657 
658 static struct kprobe trampoline = {
661 };
662 
664 {
665  return register_kprobe(&trampoline);
666 }
667 
669 {
670  return p->addr == (kprobe_opcode_t *) &kretprobe_trampoline;
671 }