From 24e3e338db1704a7063cdd01f5851b3b1355846e Mon Sep 17 00:00:00 2001 From: Martin Cermak Date: Mon, 2 Jan 2017 16:05:57 +0100 Subject: [PATCH] PR20333/recvmmsg --- tapset/linux/nd_syscalls2.stp | 26 --------------- tapset/linux/sysc_recvmmsg.stp | 60 ++++++++++++++++++++++++++++++++++ tapset/linux/syscalls2.stp | 25 -------------- 3 files changed, 60 insertions(+), 51 deletions(-) create mode 100644 tapset/linux/sysc_recvmmsg.stp diff --git a/tapset/linux/nd_syscalls2.stp b/tapset/linux/nd_syscalls2.stp index 26e8e8a70..0f12faa27 100644 --- a/tapset/linux/nd_syscalls2.stp +++ b/tapset/linux/nd_syscalls2.stp @@ -1,30 +1,4 @@ -# recvmmsg ___________________________________________________ -# -# long sys_recvmmsg(int fd, struct mmsghdr __user *mmsg, -# unsigned int vlen, unsigned int flags, -# struct timespec __user *timeout) -# -probe nd_syscall.recvmmsg = kprobe.function("sys_recvmmsg").call ? -{ - name = "recvmmsg" - asmlinkage() - s = int_arg(1) - mmsg_uaddr = pointer_arg(2) - vlen = uint_arg(3) - flags = uint_arg(4) - flags_str = _msg_flags_str(flags) - timeout_uaddr = pointer_arg(5) - argstr = sprintf("%d, %p, %u, %s, %s", s, mmsg_uaddr, vlen, - _msg_flags_str(flags), - _struct_timespec_u(timeout_uaddr, 1)) -} -probe nd_syscall.recvmmsg.return = kprobe.function("sys_recvmmsg").return ? -{ - name = "recvmmsg" - retstr = returnstr(1) -} - # compat_recvmmsg ___________________________________________________ # # long compat_sys_recvmmsg(int fd, struct compat_mmsghdr __user *mmsg, diff --git a/tapset/linux/sysc_recvmmsg.stp b/tapset/linux/sysc_recvmmsg.stp new file mode 100644 index 000000000..54c19d570 --- /dev/null +++ b/tapset/linux/sysc_recvmmsg.stp @@ -0,0 +1,60 @@ +# recvmmsg ___________________________________________________ +# +# long sys_recvmmsg(int fd, struct mmsghdr __user *mmsg, +# unsigned int vlen, unsigned int flags, +# struct timespec __user *timeout) +# + +@define _SYSCALL_RECVMMSG_NAME +%( + name = "recvmmsg" +%) + +@define _SYSCALL_RECVMMSG_ARGSTR +%( + argstr = sprintf("%d, %p, %u, %s, %s", s, mmsg_uaddr, vlen, flags_str, timeout_str) +%) + +probe syscall.recvmmsg = dw_syscall.recvmmsg !, nd_syscall.recvmmsg {} +probe syscall.recvmmsg.return = dw_syscall.recvmmsg.return !, nd_syscall.recvmmsg.return {} + +# dw_recvmmsg _____________________________________________________ + +probe dw_syscall.recvmmsg = kernel.function("sys_recvmmsg").call ? +{ + @_SYSCALL_RECVMMSG_NAME + s = __int32($fd) + mmsg_uaddr = $mmsg + vlen = __uint32($vlen) + flags = __uint32($flags) + flags_str = _msg_flags_str(flags) + timeout_uaddr = $timeout + timeout_str = _struct_timespec_u(timeout_uaddr, 1) + @_SYSCALL_RECVMMSG_ARGSTR +} +probe dw_syscall.recvmmsg.return = kernel.function("sys_recvmmsg").return ? +{ + @_SYSCALL_RECVMMSG_NAME + retstr = return_str(1, $return) +} + +# nd_recvmmsg _____________________________________________________ + +probe nd_syscall.recvmmsg = kprobe.function("sys_recvmmsg").call ? +{ + @_SYSCALL_RECVMMSG_NAME + asmlinkage() + s = int_arg(1) + mmsg_uaddr = pointer_arg(2) + vlen = uint_arg(3) + flags = uint_arg(4) + flags_str = _msg_flags_str(flags) + timeout_uaddr = pointer_arg(5) + timeout_str = _struct_timespec_u(timeout_uaddr, 1) + @_SYSCALL_RECVMMSG_ARGSTR +} +probe nd_syscall.recvmmsg.return = kprobe.function("sys_recvmmsg").return ? +{ + @_SYSCALL_RECVMMSG_NAME + retstr = returnstr(1) +} diff --git a/tapset/linux/syscalls2.stp b/tapset/linux/syscalls2.stp index c1a9b55ac..0543abeb6 100644 --- a/tapset/linux/syscalls2.stp +++ b/tapset/linux/syscalls2.stp @@ -1,29 +1,4 @@ -# recvmmsg ___________________________________________________ -# -# long sys_recvmmsg(int fd, struct mmsghdr __user *mmsg, -# unsigned int vlen, unsigned int flags, -# struct timespec __user *timeout) -# -probe syscall.recvmmsg = kernel.function("sys_recvmmsg").call ? -{ - name = "recvmmsg" - s = __int32($fd) - mmsg_uaddr = $mmsg - vlen = __uint32($vlen) - flags = __uint32($flags) - flags_str = _msg_flags_str(flags) - timeout_uaddr = $timeout - argstr = sprintf("%d, %p, %u, %s, %s", s, $mmsg, vlen, - _msg_flags_str(flags), - _struct_timespec_u($timeout, 1)) -} -probe syscall.recvmmsg.return = kernel.function("sys_recvmmsg").return ? -{ - name = "recvmmsg" - retstr = return_str(1, $return) -} - # compat_recvmmsg ___________________________________________________ # # long compat_sys_recvmmsg(int fd, struct compat_mmsghdr __user *mmsg, -- 2.43.5