summaryrefslogtreecommitdiffstats
path: root/runtime
diff options
context:
space:
mode:
authorMark Wielaard <mwielaard@redhat.com>2008-07-09 17:14:01 +0200
committerMark Wielaard <mwielaard@redhat.com>2008-07-09 17:18:23 +0200
commit25814e6c66b461380bbc9ef8fa263c868983efa6 (patch)
tree5efb7462e9561d2724a85a148e2feb0eb69dc567 /runtime
parent07bd3b82ab643ba1f889c07132074dd0cd8c2d1d (diff)
downloadsystemtap-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/ChangeLog8
-rw-r--r--runtime/autoconf-real-parent.c15
-rw-r--r--runtime/task_finder.c3
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