This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
On 05/13/2009 10:43 PM, Wenji Huang wrote:Hi,
The commit in kernel
signals: check_kill_permission: check session under tasklist_lock author Oleg Nesterov <oleg@tv-sign.ru> Wed, 30 Apr 2008 07:53:01 +0000 (00:53 -0700) committer Linus Torvalds <torvalds@linux-foundation.org> Wed, 30 Apr 2008 15:29:37 +0000 (08:29 -0700) commit 2e2ba22ea4fd4bb85f0fa37c521066db6775cbef
removed member session from signal_struct. This results in compilation error for sid() on latest kernel.
I haven't found the replacement for the member or alike function. Guess need to make it available under %kernel_v or other solution if someone had.
Right -- I pointed this out to Malte Nuhn last week. I think the best we can do is something like:
task_session_nr_ns(current, &init_pid_ns)
I don't have a running 2.6.30 -- can you try this out?
Yes, The test confirmed that task_session_nr_ns is a good choice. But it only exists on 2.6.24+ kernel. The following patch maybe keeps better compatibility.
diff --git a/tapset/context.stp b/tapset/context.stp
index 5d855f8..b64d77c 100644
--- a/tapset/context.stp
+++ b/tapset/context.stp
@@ -70,9 +70,13 @@ function ppid:long () %{ /* pure */
* leader. Session ID is stored in the signal_struct since Kernel 2.6.0.
*/
function sid:long () %{ /* pure */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)
struct signal_struct *ss = kread( &(current->signal) );
THIS->__retvalue = kread ( &(ss->session) );
CATCH_DEREF_FAULT();
+#else
+ THIS->__retvalue = task_session_nr_ns(current, &init_pid_ns);
+#endif
%}Regards, Wenji
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |