kprobes/x86: Check Interrupt Flag modifier when registering probe
authorMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Thu, 14 Mar 2013 11:52:43 +0000 (20:52 +0900)
committerIngo Molnar <mingo@kernel.org>
Mon, 18 Mar 2013 09:21:23 +0000 (10:21 +0100)
commit9a556ab998071457e79b319f2527642dd6e50617
tree9e38cc1f936ecbc8f9e0003644d957dd6e0770ed
parent65c10553552b487a71bf5e4676743435046fae6f
kprobes/x86: Check Interrupt Flag modifier when registering probe

Currently kprobes check whether the copied instruction modifies
IF (interrupt flag) on each probe hit. This results not only in
introducing overhead but also involving
inat_get_opcode_attribute into the kprobes hot path, and it can
cause an infinite recursive call (and kernel panic in the end).

Actually, since the copied instruction itself can never be modified
on the buffer, it is needless to analyze the instruction on every
probe hit.

To fix this issue, we check it only once when registering probe
and store the result on ainsn->if_modifier.

Reported-by: Timo Juhani Lindfors <timo.lindfors@iki.fi>
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Acked-by: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
Cc: yrl.pp-manager.tt@hitachi.com
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: David S. Miller <davem@davemloft.net>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: http://lkml.kernel.org/r/20130314115242.19690.33573.stgit@mhiramat-M0-7522
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/include/asm/kprobes.h
arch/x86/kernel/kprobes/core.c