diff options
author | Mark Wielaard <mwielaard@redhat.com> | 2008-07-09 17:14:01 +0200 |
---|---|---|
committer | Mark Wielaard <mwielaard@redhat.com> | 2008-07-09 17:18:23 +0200 |
commit | 25814e6c66b461380bbc9ef8fa263c868983efa6 (patch) | |
tree | 5efb7462e9561d2724a85a148e2feb0eb69dc567 /runtime | |
parent | 07bd3b82ab643ba1f889c07132074dd0cd8c2d1d (diff) | |
download | systemtap-steved-25814e6c66b461380bbc9ef8fa263c868983efa6.tar.gz systemtap-steved-25814e6c66b461380bbc9ef8fa263c868983efa6.tar.xz systemtap-steved-25814e6c66b461380bbc9ef8fa263c868983efa6.zip |
Fix PR 6732: Add runtime/autoconf-real-parent.c check for task_struct field.
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/ChangeLog | 8 | ||||
-rw-r--r-- | runtime/autoconf-real-parent.c | 15 | ||||
-rw-r--r-- | runtime/task_finder.c | 3 |
3 files changed, 25 insertions, 1 deletions
diff --git a/runtime/ChangeLog b/runtime/ChangeLog index f7f1a5a8..25faffe2 100644 --- a/runtime/ChangeLog +++ b/runtime/ChangeLog @@ -1,3 +1,11 @@ +2008-07-09 Mark Wielaard <mwielaard@redhat.com> + + PR 6732 + * autoconf-real-parent.c: New file. + * task_finder.c (__stp_utrace_task_finder_report_exec): Define + real_parent using STAPCONF_REAL_PARENT. Undefine when no longer + needed. + 2008-07-01 David Smith <dsmith@redhat.com> * task_finder.c (__stp_get_mm_path): Corrected error return code. diff --git a/runtime/autoconf-real-parent.c b/runtime/autoconf-real-parent.c new file mode 100644 index 00000000..010792cb --- /dev/null +++ b/runtime/autoconf-real-parent.c @@ -0,0 +1,15 @@ +/* PR6732 - In RHEL5 and F[678] kernels, the utrace patch removed the + * ptrace-related parent field and renamed real_parent to parent. In + * future Fedora kernels, there may or may not be a ptrace-related + * parent field, but the real useful field will go back to being called + * real_parent. + */ +#include <linux/sched.h> + +struct task_struct t; + +void foo (void) +{ + struct task_struct *p; + p = t.real_parent; +} diff --git a/runtime/task_finder.c b/runtime/task_finder.c index 316a9bc0..fc573eb6 100644 --- a/runtime/task_finder.c +++ b/runtime/task_finder.c @@ -485,7 +485,7 @@ __stp_utrace_task_finder_report_exec(struct utrace_attached_engine *engine, // '/bin/bash' clones and then execs '/bin/ls'. If the user // was probing '/bin/bash', the cloned thread is still // '/bin/bash' up until the exec. -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25) +#if ! defined(STAPCONF_REAL_PARENT) #define real_parent parent #endif if (tsk != NULL && tsk->real_parent != NULL @@ -494,6 +494,7 @@ __stp_utrace_task_finder_report_exec(struct utrace_attached_engine *engine, // *could* call exec (although they aren't supposed to). __stp_utrace_attach_match_tsk(tsk->real_parent, tsk, 0, 1); } +#undef real_parent // We assume that all exec's are exec'ing a new process. Note // that we don't use bprm->filename, since that path can be |