lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 22 Feb 2011 12:22:17 +0900 From: Masami Hiramatsu <masami.hiramatsu.pt@...achi.com> To: Jiri Olsa <jolsa@...hat.com> Cc: mingo@...e.hu, acme@...hat.com, fweisbec@...il.com, hpa@...or.com, ananth@...ibm.com, davem@...emloft.net, linux-kernel@...r.kernel.org, tglx@...utronix.de, a.p.zijlstra@...llo.nl, eric.dumazet@...il.com, 2nddept-manager@....hitachi.co.jp, "2nddept-manager@....hitachi.co.jp" <2nddept-manager@....hitachi.co.jp> Subject: Re: [PATCH 2/2] kprobes: disabling optimized kprobes for entry text section (2011/02/21 23:25), Jiri Olsa wrote: > You can crash the kernel using kprobe tracer by running: > > echo "p system_call_after_swapgs" > ./kprobe_events > echo 1 > ./events/kprobes/enable > > The reason is that at the system_call_after_swapgs label, the kernel > stack is not set up. If optimized kprobes are enabled, the user space > stack is being used in this case (see optimized kprobe template) and > this might result in a crash. > > There are several places like this over the entry code (entry_$BIT). > As it seems there's no any reasonable/maintainable way to disable only > those places where the stack is not ready, I switched off the whole > entry code from kprobe optimizing. Thank you very much! > > wbr, > jirka > > > Signed-off-by: Jiri Olsa <jolsa@...hat.com> Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@...achi.com> > --- > arch/x86/kernel/kprobes.c | 8 ++++++++ > 1 files changed, 8 insertions(+), 0 deletions(-) > > diff --git a/arch/x86/kernel/kprobes.c b/arch/x86/kernel/kprobes.c > index d91c477..d03bc1e 100644 > --- a/arch/x86/kernel/kprobes.c > +++ b/arch/x86/kernel/kprobes.c > @@ -1276,6 +1276,14 @@ static int __kprobes can_optimize(unsigned long paddr) > if (!kallsyms_lookup_size_offset(paddr, &size, &offset)) > return 0; > > + /* > + * Do not optimize in the entry code due to the unstable > + * stack handling. > + */ > + if ((paddr >= (unsigned long ) __entry_text_start) && > + (paddr < (unsigned long ) __entry_text_end)) > + return 0; > + > /* Check there is enough space for a relative jump. */ > if (size - offset < RELATIVEJUMP_SIZE) > return 0; -- Masami HIRAMATSU 2nd Dept. Linux Technology Center Hitachi, Ltd., Systems Development Laboratory E-mail: masami.hiramatsu.pt@...achi.com -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists