From: Martin Cermak Date: Fri, 23 Dec 2016 16:44:19 +0000 (+0100) Subject: PR20333/listxattr X-Git-Tag: release-3.1~398 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=59bfd9e734c2145980151ba9a8842bd557e60bcb;p=systemtap.git PR20333/listxattr --- diff --git a/tapset/linux/nd_syscalls.stp b/tapset/linux/nd_syscalls.stp index ab7ec3934..a49a48978 100644 --- a/tapset/linux/nd_syscalls.stp +++ b/tapset/linux/nd_syscalls.stp @@ -1,24 +1,4 @@ -# listxattr __________________________________________________ -# ssize_t sys_listxattr(char __user *path, char __user *list, size_t size) -# -probe nd_syscall.listxattr = kprobe.function("sys_listxattr") ? -{ - name = "listxattr" - asmlinkage() - path_uaddr = pointer_arg(1) - path = user_string_quoted(path_uaddr) - list_uaddr = pointer_arg(2) - size = ulong_arg(3) - argstr = sprintf("%s, %p, %u", user_string_quoted(path_uaddr), - list_uaddr, size) -} -probe nd_syscall.listxattr.return = kprobe.function("sys_listxattr").return ? -{ - name = "listxattr" - retstr = returnstr(1) -} - # llistxattr _________________________________________________ # ssize_t sys_llistxattr(char __user *path, char __user *list, size_t size) # diff --git a/tapset/linux/sysc_listxattr.stp b/tapset/linux/sysc_listxattr.stp new file mode 100644 index 000000000..5c9d799a4 --- /dev/null +++ b/tapset/linux/sysc_listxattr.stp @@ -0,0 +1,51 @@ +# listxattr __________________________________________________ +# ssize_t sys_listxattr(char __user *path, char __user *list, size_t size) +# + +@define _SYSCALL_LISTXATTR_NAME +%( + name = "listxattr" +%) + +@define _SYSCALL_LISTXATTR_ARGSTR +%( + argstr = sprintf("%s, %p, %u", path, list_uaddr, size) +%) + +probe syscall.listxattr = dw_syscall.listxattr !, nd_syscall.listxattr {} +probe syscall.listxattr.return = dw_syscall.listxattr.return !, nd_syscall.listxattr.return {} + +# dw_listxattr _____________________________________________________ + +probe dw_syscall.listxattr = kernel.function("sys_listxattr").call +{ + @_SYSCALL_LISTXATTR_NAME + list_uaddr = $list + size = __ulong($size) + path_uaddr = @choose_defined($pathname, $path) + path = user_string_quoted(@choose_defined($pathname, $path)) + @_SYSCALL_LISTXATTR_ARGSTR +} +probe dw_syscall.listxattr.return = kernel.function("sys_listxattr").return +{ + @_SYSCALL_LISTXATTR_NAME + retstr = return_str(1, $return) +} + +# nd_listxattr _____________________________________________________ + +probe nd_syscall.listxattr = kprobe.function("sys_listxattr") ? +{ + @_SYSCALL_LISTXATTR_NAME + asmlinkage() + path_uaddr = pointer_arg(1) + path = user_string_quoted(path_uaddr) + list_uaddr = pointer_arg(2) + size = ulong_arg(3) + @_SYSCALL_LISTXATTR_ARGSTR +} +probe nd_syscall.listxattr.return = kprobe.function("sys_listxattr").return ? +{ + @_SYSCALL_LISTXATTR_NAME + retstr = returnstr(1) +} diff --git a/tapset/linux/syscalls.stp b/tapset/linux/syscalls.stp index 74e9fcaf2..a4a1549a9 100644 --- a/tapset/linux/syscalls.stp +++ b/tapset/linux/syscalls.stp @@ -1,24 +1,4 @@ -# listxattr __________________________________________________ -# ssize_t sys_listxattr(char __user *path, char __user *list, size_t size) -# -probe syscall.listxattr = kernel.function("sys_listxattr").call -{ - name = "listxattr" - list_uaddr = $list - size = __ulong($size) - path_uaddr = @choose_defined($pathname, $path) - path = user_string_quoted(@choose_defined($pathname, $path)) - argstr = sprintf("%s, %p, %u", - user_string_quoted(@choose_defined($pathname, $path)), - $list, __ulong($size)) -} -probe syscall.listxattr.return = kernel.function("sys_listxattr").return -{ - name = "listxattr" - retstr = return_str(1, $return) -} - # llistxattr _________________________________________________ # ssize_t sys_llistxattr(char __user *path, char __user *list, size_t size) #