From 8e0e01595e8e60af7ddf9418cf7a69e6eb63ff8f Mon Sep 17 00:00:00 2001 From: Martin Cermak Date: Mon, 2 Jan 2017 16:40:43 +0100 Subject: [PATCH] PR20333/rt_sigpending --- tapset/linux/nd_syscalls2.stp | 44 --------------- tapset/linux/sysc_rt_sigpending.stp | 87 +++++++++++++++++++++++++++++ tapset/linux/syscalls2.stp | 34 ----------- 3 files changed, 87 insertions(+), 78 deletions(-) create mode 100644 tapset/linux/sysc_rt_sigpending.stp diff --git a/tapset/linux/nd_syscalls2.stp b/tapset/linux/nd_syscalls2.stp index 0bea3a7b7..f18057e31 100644 --- a/tapset/linux/nd_syscalls2.stp +++ b/tapset/linux/nd_syscalls2.stp @@ -1,48 +1,4 @@ -# rt_sigpending ______________________________________________ -# -# long sys_rt_sigpending(sigset_t __user *set, size_t sigsetsize) -# COMPAT_SYSCALL_DEFINE2(rt_sigpending, compat_sigset_t __user *, uset, -# compat_size_t, sigsetsize) -# asmlinkage long sys32_rt_sigpending(compat_sigset_t __user *set, -# compat_size_t sigsetsize) -# -probe nd_syscall.rt_sigpending = __nd_syscall.rt_sigpending ?, - __nd_syscall.compat_rt_sigpending ? -{ - name = "rt_sigpending" - asmlinkage() - set_uaddr = pointer_arg(1) - sigsetsize = ulong_arg(2) - argstr = sprintf("%p, %u", set_uaddr, sigsetsize) -} -probe __nd_syscall.rt_sigpending = kprobe.function("sys_rt_sigpending") ? -{ - @__syscall_gate(@const("__NR_rt_sigpending")) -} -probe __nd_syscall.compat_rt_sigpending = - kprobe.function("compat_sys_rt_sigpending") !, - kprobe.function("sys32_rt_sigpending") ? -{ -} -probe nd_syscall.rt_sigpending.return = - __nd_syscall.rt_sigpending.return ?, - __nd_syscall.compat_rt_sigpending.return ? -{ - name = "rt_sigpending" - retstr = returnstr(1) -} -probe __nd_syscall.rt_sigpending.return = - kprobe.function("sys_rt_sigpending").return ? -{ - @__syscall_gate(@const("__NR_rt_sigpending")) -} -probe __nd_syscall.compat_rt_sigpending.return = - kprobe.function("compat_sys_rt_sigpending").return !, - kprobe.function("sys32_rt_sigpending").return ? -{ -} - # rt_sigprocmask _____________________________________________ # long sys_rt_sigprocmask(int how, sigset_t __user *set, sigset_t __user *oset, # size_t sigsetsize) diff --git a/tapset/linux/sysc_rt_sigpending.stp b/tapset/linux/sysc_rt_sigpending.stp new file mode 100644 index 000000000..696ffbcee --- /dev/null +++ b/tapset/linux/sysc_rt_sigpending.stp @@ -0,0 +1,87 @@ +# rt_sigpending ______________________________________________ +# +# long sys_rt_sigpending(sigset_t __user *set, size_t sigsetsize) +# COMPAT_SYSCALL_DEFINE2(rt_sigpending, compat_sigset_t __user *, uset, +# compat_size_t, sigsetsize) +# asmlinkage long sys32_rt_sigpending(compat_sigset_t __user *set, +# compat_size_t sigsetsize) +# + +@define _SYSCALL_RT_SIGPENDING_NAME +%( + name = "rt_sigpending" +%) + +@define _SYSCALL_RT_SIGPENDING_ARGSTR +%( + argstr = sprintf("%p, %u", set_uaddr, sigsetsize) +%) + +probe syscall.rt_sigpending = dw_syscall.rt_sigpending !, nd_syscall.rt_sigpending {} +probe syscall.rt_sigpending.return = dw_syscall.rt_sigpending.return !, nd_syscall.rt_sigpending.return {} + +# dw_rt_sigpending _____________________________________________________ + +probe dw_syscall.rt_sigpending = __syscall.rt_sigpending ?, + kernel.function("compat_sys_rt_sigpending").call !, + kernel.function("sys32_rt_sigpending").call ? +{ + @_SYSCALL_RT_SIGPENDING_NAME + set_uaddr = @choose_defined($uset, $set) + sigsetsize = @__compat_ulong($sigsetsize) + @_SYSCALL_RT_SIGPENDING_ARGSTR +} +probe __syscall.rt_sigpending = kernel.function("sys_rt_sigpending").call ? +{ + @__syscall_gate(@const("__NR_rt_sigpending")) +} +probe dw_syscall.rt_sigpending.return = __syscall.rt_sigpending.return ?, + kernel.function("compat_sys_rt_sigpending").return !, + kernel.function("sys32_rt_sigpending").return ? +{ + @_SYSCALL_RT_SIGPENDING_NAME + retstr = return_str(1, $return) +} +probe __syscall.rt_sigpending.return = + kernel.function("sys_rt_sigpending").return ? +{ + @__syscall_gate(@const("__NR_rt_sigpending")) +} + +# nd_rt_sigpending _____________________________________________________ + +probe nd_syscall.rt_sigpending = __nd_syscall.rt_sigpending ?, + __nd_syscall.compat_rt_sigpending ? +{ + @_SYSCALL_RT_SIGPENDING_NAME + asmlinkage() + set_uaddr = pointer_arg(1) + sigsetsize = ulong_arg(2) + @_SYSCALL_RT_SIGPENDING_ARGSTR +} +probe __nd_syscall.rt_sigpending = kprobe.function("sys_rt_sigpending") ? +{ + @__syscall_gate(@const("__NR_rt_sigpending")) +} +probe __nd_syscall.compat_rt_sigpending = + kprobe.function("compat_sys_rt_sigpending") !, + kprobe.function("sys32_rt_sigpending") ? +{ +} +probe nd_syscall.rt_sigpending.return = + __nd_syscall.rt_sigpending.return ?, + __nd_syscall.compat_rt_sigpending.return ? +{ + @_SYSCALL_RT_SIGPENDING_NAME + retstr = returnstr(1) +} +probe __nd_syscall.rt_sigpending.return = + kprobe.function("sys_rt_sigpending").return ? +{ + @__syscall_gate(@const("__NR_rt_sigpending")) +} +probe __nd_syscall.compat_rt_sigpending.return = + kprobe.function("compat_sys_rt_sigpending").return !, + kprobe.function("sys32_rt_sigpending").return ? +{ +} diff --git a/tapset/linux/syscalls2.stp b/tapset/linux/syscalls2.stp index 5c212bba3..680e11965 100644 --- a/tapset/linux/syscalls2.stp +++ b/tapset/linux/syscalls2.stp @@ -1,38 +1,4 @@ -# rt_sigpending ______________________________________________ -# -# long sys_rt_sigpending(sigset_t __user *set, size_t sigsetsize) -# COMPAT_SYSCALL_DEFINE2(rt_sigpending, compat_sigset_t __user *, uset, -# compat_size_t, sigsetsize) -# asmlinkage long sys32_rt_sigpending(compat_sigset_t __user *set, -# compat_size_t sigsetsize) -# -probe syscall.rt_sigpending = __syscall.rt_sigpending ?, - kernel.function("compat_sys_rt_sigpending").call !, - kernel.function("sys32_rt_sigpending").call ? -{ - name = "rt_sigpending" - set_uaddr = @choose_defined($uset, $set) - sigsetsize = @__compat_ulong($sigsetsize) - argstr = sprintf("%p, %u", set_uaddr, sigsetsize) -} -probe __syscall.rt_sigpending = kernel.function("sys_rt_sigpending").call ? -{ - @__syscall_gate(@const("__NR_rt_sigpending")) -} -probe syscall.rt_sigpending.return = __syscall.rt_sigpending.return ?, - kernel.function("compat_sys_rt_sigpending").return !, - kernel.function("sys32_rt_sigpending").return ? -{ - name = "rt_sigpending" - retstr = return_str(1, $return) -} -probe __syscall.rt_sigpending.return = - kernel.function("sys_rt_sigpending").return ? -{ - @__syscall_gate(@const("__NR_rt_sigpending")) -} - # rt_sigprocmask _____________________________________________ # long sys_rt_sigprocmask(int how, sigset_t __user *set, sigset_t __user *oset, # size_t sigsetsize) -- 2.43.5