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]

Re: Member session missing in signal_struct for 2.6.30-rc5


Josh Stone wrote:
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]