Hi Dave,

Are these issues only for crash tools? or it occurs in kernel func-backtrace 
too?
And how would you fix it?

Thank you,

Dave Anderson wrote:
> 
> ----- "Dave Anderson" <[email protected]> wrote:
> 
>> I've got a fix for x86_64 -- which have always depended on the existence of
>> the "thread_return" label.  But I note that x86 backtraces also are not 
>> working,
>> which I'll take a look at today.
>  
> As it turns out, the x86 backtrace failures in 2.6.33/34 are caused by a 
> different
> kprobes-related commit, which moved the system_call assembly function to the
> .kprobes.text section:
> 
>   commit a00e817f42663941ea0aa5f85a9d1c4f8b212839
>   Author: Masami Hiramatsu <[email protected]>
>   Date:   Tue Sep 8 12:47:55 2009 -0400
> 
>     kprobes/x86-32: Move irq-exit functions to kprobes section
>     
>     Move irq-exit functions to .kprobes.text section to protect against
>     kprobes recursion.
>     
>     When I ran kprobe stress test on x86-32, I found below symbols
>     cause unrecoverable recursive probing:
>     
>         ret_from_exception
>         ret_from_intr
>         check_userspace
>         restore_all
>         restore_all_notrace
>         restore_nocheck
>         irq_return
>     
>     And also, I found some interrupt/exception entry points that
>     cause similar problems.
>     
>     This patch moves those symbols (including their container functions)
>     to .kprobes.text section to prevent any kprobes probing.
>     
>     Signed-off-by: Masami Hiramatsu <[email protected]>
>     Cc: Frederic Weisbecker <[email protected]>
>     Cc: Ananth N Mavinakayanahalli <[email protected]>
>     Cc: Jim Keniston <[email protected]>
>     Cc: Ingo Molnar <[email protected]>
>     LKML-Reference: 
> <[email protected]>
>     Signed-off-by: Frederic Weisbecker <[email protected]>
> 
>   ... [ snip ] ... 
>   
>   @@ -513,6 +521,10 @@ sysexit_audit:
>           PTGS_TO_GS_EX
>    ENDPROC(ia32_sysenter_target)
>    
>   +/*
>   + * syscall stub including irq exit should be protected against kprobes
>   + */
>   +       .pushsection .kprobes.text, "ax"
>           # system call handler stub
>    ENTRY(system_call)
>           RING0_INT_FRAME                 # can't unwind into user space 
> anyway
>   @@ -705,6 +717,10 @@ syscall_badsys:
>           jmp resume_userspace
>    END(syscall_badsys)
>           CFI_ENDPROC
>   +/*
>   + * End of kprobes section
>   + */
>   +       .popsection
>  
> I should have a fix tomorrow (if that's the only issue)...
> 
> Dave

-- 
Masami Hiramatsu
e-mail: [email protected]

--
Crash-utility mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/crash-utility

Reply via email to