x86: kretprobe-booster interrupt emulation code fix
authorMasami Hiramatsu <mhiramat@redhat.com>
Mon, 23 Mar 2009 14:14:52 +0000 (10:14 -0400)
committerIngo Molnar <mingo@elte.hu>
Wed, 25 Mar 2009 17:53:29 +0000 (18:53 +0100)
commitfee039a1d05c6e0f71b0fe270d847742a02d56c4
tree8a876f852588e2ff4219ab29de4586b8a40556f9
parenta524446fe82f7f38738403a5a080c4910af86a61
x86: kretprobe-booster interrupt emulation code fix

Fix interrupt emulation code in kretprobe-booster according to
pt_regs update (es/ds change and gs adding).

This issue has been reported on systemtap-bugzilla:

  http://sources.redhat.com/bugzilla/show_bug.cgi?id=9965

  | On a -tip kernel on x86_32, kretprobe_example (from samples) triggers the
  | following backtrace when its retprobing a class of functions that cause a
  | copy_from/to_user().
  |
  | BUG: sleeping function called from invalid context at mm/memory.c:3196
  | in_atomic(): 0, irqs_disabled(): 1, pid: 2286, name: cat

Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com>
Acked-by: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
Tested-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
Cc: systemtap-ml <systemtap@sources.redhat.com>
LKML-Reference: <49C7995C.2010601@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/kprobes.c