diff options
author | Mark Wielaard <mjw@redhat.com> | 2009-09-07 11:36:03 +0200 |
---|---|---|
committer | Mark Wielaard <mjw@redhat.com> | 2009-09-07 11:39:24 +0200 |
commit | 8785346c7b4789a23559ab7811cac692513d0fbf (patch) | |
tree | d7fcc0f57cc6796aa8e8d4e069212dba4e4f8273 | |
parent | 201e18a8841a2cb341a752ca180014a3b8fe5234 (diff) | |
download | systemtap-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.stp | 15 | ||||
-rw-r--r-- | tapset/syscalls2.stp | 12 |
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) |