From 72b65ab137a8d14320b92689b3d31b049f15804b Mon Sep 17 00:00:00 2001 From: Martin Cermak Date: Tue, 3 Jan 2017 14:53:04 +0100 Subject: [PATCH] PR20333/utimensat --- tapset/linux/nd_syscalls2.stp | 24 +------------ tapset/linux/sysc_utimensat.stp | 61 +++++++++++++++++++++++++++++++++ tapset/linux/syscalls2.stp | 23 +------------ 3 files changed, 63 insertions(+), 45 deletions(-) create mode 100644 tapset/linux/sysc_utimensat.stp diff --git a/tapset/linux/nd_syscalls2.stp b/tapset/linux/nd_syscalls2.stp index 7cec9a3e5..703dbf2b5 100644 --- a/tapset/linux/nd_syscalls2.stp +++ b/tapset/linux/nd_syscalls2.stp @@ -1,24 +1,7 @@ - -# utimensat ____________________________________________________ +# compat_utimensat _____________________________________________ # long sys_utimensat(int dfd, char __user *filename, struct timespec __user *utimes, int flags) # long compat_sys_utimensat(unsigned int dfd, char __user *filename, struct compat_timespec __user *t, int flags) # -probe nd_syscall.utimensat = kprobe.function("sys_utimensat") ? -{ - name = "utimensat" - asmlinkage() - dfd = int_arg(1) - dfd_str = _dfd_str(dfd) - filename_uaddr = pointer_arg(2) - filename = user_string_quoted(filename_uaddr) - tsp_uaddr = pointer_arg(3) - flags = int_arg(4) - flags_str = _at_flag_str(flags) - argstr = sprintf("%s, %s, %s, %s", _dfd_str(dfd), - user_string_quoted(filename_uaddr), - _struct_timespec_u(tsp_uaddr, 2), - _at_flag_str(flags)) -} probe nd_syscall.compat_utimensat = kprobe.function("compat_sys_utimensat") ? { name = "utimensat" @@ -35,11 +18,6 @@ probe nd_syscall.compat_utimensat = kprobe.function("compat_sys_utimensat") ? _struct_compat_timespec_u(tsp_uaddr, 2), _at_flag_str(flags)) } -probe nd_syscall.utimensat.return = kprobe.function("sys_utimensat").return ? -{ - name = "utimensat" - retstr = returnstr(1) -} probe nd_syscall.compat_utimensat.return = kprobe.function("compat_sys_utimensat").return ? { name = "utimensat" diff --git a/tapset/linux/sysc_utimensat.stp b/tapset/linux/sysc_utimensat.stp new file mode 100644 index 000000000..2681b57de --- /dev/null +++ b/tapset/linux/sysc_utimensat.stp @@ -0,0 +1,61 @@ +# utimensat ____________________________________________________ +# long sys_utimensat(int dfd, char __user *filename, struct timespec __user *utimes, int flags) +# long compat_sys_utimensat(unsigned int dfd, char __user *filename, struct compat_timespec __user *t, int flags) +# + +@define _SYSCALL_UTIMENSAT_NAME +%( + name = "utimensat" +%) + +@define _SYSCALL_UTIMENSAT_ARGSTR +%( + argstr = sprintf("%s, %s, %s, %s", dfd_str, filename, tsp_str, flags_str) +%) + +probe syscall.utimensat = dw_syscall.utimensat !, nd_syscall.utimensat {} +probe syscall.utimensat.return = dw_syscall.utimensat.return !, + nd_syscall.utimensat.return {} + +# dw_utimensat _____________________________________________________ + +probe dw_syscall.utimensat = kernel.function("sys_utimensat").call ? +{ + @_SYSCALL_UTIMENSAT_NAME + dfd = __int32($dfd) + dfd_str = _dfd_str(__int32($dfd)) + filename_uaddr = $filename + filename = user_string_quoted($filename) + tsp_uaddr = $utimes + tsp_str = _struct_timespec_u(tsp_uaddr, 2) + flags = __int32($flags) + flags_str = _at_flag_str(__int32($flags)) + @_SYSCALL_UTIMENSAT_ARGSTR +} +probe dw_syscall.utimensat.return = kernel.function("sys_utimensat").return ? +{ + @_SYSCALL_UTIMENSAT_NAME + retstr = return_str(1, $return) +} + +# nd_utimensat _____________________________________________________ + +probe nd_syscall.utimensat = kprobe.function("sys_utimensat") ? +{ + @_SYSCALL_UTIMENSAT_NAME + asmlinkage() + dfd = int_arg(1) + dfd_str = _dfd_str(dfd) + filename_uaddr = pointer_arg(2) + filename = user_string_quoted(filename_uaddr) + tsp_uaddr = pointer_arg(3) + tsp_str = _struct_timespec_u(tsp_uaddr, 2) + flags = int_arg(4) + flags_str = _at_flag_str(flags) + @_SYSCALL_UTIMENSAT_ARGSTR +} +probe nd_syscall.utimensat.return = kprobe.function("sys_utimensat").return ? +{ + @_SYSCALL_UTIMENSAT_NAME + retstr = returnstr(1) +} diff --git a/tapset/linux/syscalls2.stp b/tapset/linux/syscalls2.stp index 0f5283b68..9aa3186fa 100644 --- a/tapset/linux/syscalls2.stp +++ b/tapset/linux/syscalls2.stp @@ -1,23 +1,7 @@ - -# utimensat ____________________________________________________ +# compat_utimensat _____________________________________________ # long sys_utimensat(int dfd, char __user *filename, struct timespec __user *utimes, int flags) # long compat_sys_utimensat(unsigned int dfd, char __user *filename, struct compat_timespec __user *t, int flags) # -probe syscall.utimensat = kernel.function("sys_utimensat").call ? -{ - name = "utimensat" - dfd = __int32($dfd) - dfd_str = _dfd_str(__int32($dfd)) - filename_uaddr = $filename - filename = user_string_quoted($filename) - tsp_uaddr = $utimes - flags = __int32($flags) - flags_str = _at_flag_str(__int32($flags)) - argstr = sprintf("%s, %s, %s, %s", _dfd_str(__int32($dfd)), - user_string_quoted($filename), - _struct_timespec_u($utimes, 2), - _at_flag_str(__int32($flags))) -} probe syscall.compat_utimensat = kernel.function("compat_sys_utimensat").call ? { name = "utimensat" @@ -33,11 +17,6 @@ probe syscall.compat_utimensat = kernel.function("compat_sys_utimensat").call ? _struct_compat_timespec_u($t, 2), _at_flag_str(__int32($flags))) } -probe syscall.utimensat.return = kernel.function("sys_utimensat").return ? -{ - name = "utimensat" - retstr = return_str(1, $return) -} probe syscall.compat_utimensat.return = kernel.function("compat_sys_utimensat").return ? { name = "utimensat" -- 2.43.5