Messages in this thread | | | Date | Mon, 24 Feb 2014 11:39:09 +0900 | From | Masami Hiramatsu <> | Subject | Re: [PATCH -tip 0/2] kprobes/x86: Fix bugs for NMI handling |
| |
Hi Ingo,
Should I resend this series to your kernel.org address?
Thank you,
(2014/02/20 12:39), Masami Hiramatsu wrote: > The following series fixes bugs hidden in the ancient code. > > The bugs suddenly appeared when I enabled over 6,000 kprobes > and ran perf-top with --call-graph. The bugs are hidden in > the old code and it have woken up by real stress testing. > > Actually, current kprobes doesn't expect an NMI handler > hits in single-stepping state (including preparation and > do_debug() handling). Moreover, the NMI handler causing > a page fault by trying to access user pages, is out of > imagination! :) But perf does it. > > Thus the previous code optimistically check the current > running kprobe state, and if it is in the singlestep state, > it changes the IP address to probed address and return, > because it expects the page fault happened on the single > stepped code. > However, in fact, the perf's NMI can interrupt the > do_debug or somewhere around that and it may cause a > page fault. In this case, putting the IP address to > probed address is simply wrong. It causes unexpected > kernel crash. > To handle this correctly, this patch fixes it to ensure > the page-fault address is actually same to the single- > stepping address, and only if so, set the IP address > to the probed address. > > I also found another small mistake which gives up the > recovery from reentered kprobes in single-stepping state, > but it also assumes that there is no NMI handler interrupts > in that state. It should gives up only when the nested > reentering happens. > > Thanks to Ingo and Frank for encouraging me to start > stress testing with massive multiple kprobes. :) > > Thank you, > > --- > > Masami Hiramatsu (2): > [BUGFIX]kprobes/x86: Fix page-fault handling logic > kprobes/x86: Allow to handle reentered kprobe on singlestepping > > > arch/x86/kernel/kprobes/core.c | 16 ++++++---------- > 1 file changed, 6 insertions(+), 10 deletions(-) > > -- > Signature > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ > >
-- Masami HIRAMATSU IT Management Research Dept. Linux Technology Center Hitachi, Ltd., Yokohama Research Laboratory E-mail: masami.hiramatsu.pt@hitachi.com
| |