diff options
author | Roland McGrath <roland@redhat.com> | 2009-11-30 15:27:21 -0500 |
---|---|---|
committer | Frank Ch. Eigler <fche@elastic.org> | 2009-11-30 15:33:38 -0500 |
commit | d3b20053a696d3834d4b2cf73afa296464555c85 (patch) | |
tree | 27158e141c8bf9df16768ec4827b37d4a428adb4 /runtime | |
parent | ab7236f68712b18656cb82307e6ca5dbe8de9fa7 (diff) | |
download | systemtap-steved-d3b20053a696d3834d4b2cf73afa296464555c85.tar.gz systemtap-steved-d3b20053a696d3834d4b2cf73afa296464555c85.tar.xz systemtap-steved-d3b20053a696d3834d4b2cf73afa296464555c85.zip |
PR10653: don't corrupt signal structs in itrace on rawhide utrace
* runtime/itrace.c (usr_itrace_report_signal): On modern utrace,
must check/propagate utrace_signal_action().
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/itrace.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/runtime/itrace.c b/runtime/itrace.c index 03e1e403..f2ed86f2 100644 --- a/runtime/itrace.c +++ b/runtime/itrace.c @@ -131,9 +131,16 @@ static u32 usr_itrace_report_signal(u32 action, ui = rcu_dereference(engine->data); WARN_ON(!ui); - - if (info->si_signo != SIGTRAP || !ui) - return UTRACE_RESUME; + +#if defined(UTRACE_ORIG_VERSION) + if (info->si_signo != SIGTRAP || !ui) + return UTRACE_RESUME; +#else + if (utrace_signal_action(action) == UTRACE_SIGNAL_HANDLER || + utrace_signal_action(action) == UTRACE_SIGNAL_REPORT || + info->si_signo != SIGTRAP || !ui) + return UTRACE_RESUME | utrace_signal_action(action); +#endif #if defined(UTRACE_ORIG_VERSION) && defined(CONFIG_PPC) /* Because of a ppc utrace bug, we need to stop the task here. |