summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Wielaard <mjw@redhat.com>2009-09-07 11:36:03 +0200
committerMark Wielaard <mjw@redhat.com>2009-09-07 11:39:24 +0200
commit8785346c7b4789a23559ab7811cac692513d0fbf (patch)
treed7fcc0f57cc6796aa8e8d4e069212dba4e4f8273
parent201e18a8841a2cb341a752ca180014a3b8fe5234 (diff)
downloadsystemtap-steved-8785346c7b4789a23559ab7811cac692513d0fbf.tar.gz
systemtap-steved-8785346c7b4789a23559ab7811cac692513d0fbf.tar.xz
systemtap-steved-8785346c7b4789a23559ab7811cac692513d0fbf.zip
PR10613 sys32_ustat is renamed compat_sys_ustat in 2.6.30 kernel.
Note that the new compat_sys_ustat is asmlinkage and has a differently named argument for the user struct. * tapset/syscalls2.stp (syscall.ustat32): Add compat_sys_ustat variant. (syscall.ustat.return): Likewise. * tapset/nd_syscalls2.stp (nd_syscall.ustat32): Likewise. (nd_syscall.ustat.return): Likewise.
-rw-r--r--tapset/nd_syscalls2.stp15
-rw-r--r--tapset/syscalls2.stp12
2 files changed, 25 insertions, 2 deletions
diff --git a/tapset/nd_syscalls2.stp b/tapset/nd_syscalls2.stp
index 6e50d256..8b604f94 100644
--- a/tapset/nd_syscalls2.stp
+++ b/tapset/nd_syscalls2.stp
@@ -4134,10 +4134,23 @@ probe nd_syscall.ustat32 = kprobe.function("sys32_ustat") ?
dev = uint_arg(1)
argstr = sprintf("%d, %p", dev, pointer_arg(2))
}
+# Since 2.6.30 sys32_ustat is called compat_sys_ustat and is now asmlinkage.
+#asmlinkage long compat_sys_ustat(unsigned dev, struct compat_ustat __user *u)
+probe nd_syscall.ustat32 = kprobe.function("compat_sys_ustat") ?
+{
+ name = "ustat"
+ // dev = $dev
+ // argstr = sprintf("%d, %p", $dev, $u)
+ // asmlinkage
+ asmlinkage()
+ dev = uint_arg(1)
+ argstr = sprintf("%d, %p", dev, pointer_arg(2))
+}
probe nd_syscall.ustat.return = kprobe.function("SyS_ustat").return ?,
kprobe.function("sys_ustat").return ?,
- kprobe.function("sys32_ustat").return ?
+ kprobe.function("sys32_ustat").return ?,
+ kprobe.function("compat_sys_ustat").return ?
{
name = "ustat"
retstr = returnstr(1)
diff --git a/tapset/syscalls2.stp b/tapset/syscalls2.stp
index defc50a0..e2be10fc 100644
--- a/tapset/syscalls2.stp
+++ b/tapset/syscalls2.stp
@@ -3414,10 +3414,20 @@ probe syscall.ustat32 = kernel.function("sys32_ustat") ?
dev = $dev
argstr = sprintf("%d, %p", $dev, $u32p)
}
+# Since 2.6.30 sys32_ustat is compat_sys_ustat
+# Note that last argument changed name.
+#long compat_sys_ustat(unsigned dev, struct compat_ustat __user *u)
+probe syscall.ustat32 = kernel.function("compat_sys_ustat") ?
+{
+ name = "ustat"
+ dev = $dev
+ argstr = sprintf("%d, %p", $dev, $u)
+}
probe syscall.ustat.return = kernel.function("SyS_ustat").return ?,
kernel.function("sys_ustat").return ?,
- kernel.function("sys32_ustat").return ?
+ kernel.function("sys32_ustat").return ?,
+ kernel.function("compat_sys_ustat").return ?
{
name = "ustat"
retstr = returnstr(1)