From: Martin Cermak Date: Thu, 22 Dec 2016 12:49:38 +0000 (+0100) Subject: PR20333/add_key X-Git-Tag: release-3.1~517 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=f4773050b1ab9021cb7fb5761c991ca6949d619a;p=systemtap.git PR20333/add_key --- diff --git a/tapset/linux/nd_syscalls.stp b/tapset/linux/nd_syscalls.stp index ab1f71221..564578de4 100644 --- a/tapset/linux/nd_syscalls.stp +++ b/tapset/linux/nd_syscalls.stp @@ -1,32 +1,4 @@ -# add_key ____________________________________________________ -# long sys_add_key(const char __user *_type, -# const char __user *_description, -# const void __user *_payload, -# size_t plen, -# key_serial_t ringid) -# -probe nd_syscall.add_key = kprobe.function("sys_add_key") ? -{ - name = "add_key" - asmlinkage() - type_uaddr = pointer_arg(1) - description_uaddr = pointer_arg(2) - payload_uaddr = pointer_arg(3) - plen = ulong_arg(4) - ringid = int_arg(5) - argstr = sprintf("%s, %s, %s, %u, %d", - user_string_quoted(type_uaddr), - user_string_quoted(description_uaddr), - user_buffer_quoted(payload_uaddr, plen, syscall_string_trunc), - plen, ringid) -} -probe nd_syscall.add_key.return = kprobe.function("sys_add_key").return ? -{ - name = "add_key" - retstr = returnstr(1) -} - # adjtimex ___________________________________________________ # long sys_adjtimex(struct timex __user *txc_p) probe nd_syscall.adjtimex = kprobe.function("sys_adjtimex") ? diff --git a/tapset/linux/sysc_add_key.stp b/tapset/linux/sysc_add_key.stp new file mode 100644 index 000000000..86442fdc1 --- /dev/null +++ b/tapset/linux/sysc_add_key.stp @@ -0,0 +1,61 @@ +# add_key ____________________________________________________ +# long sys_add_key(const char __user *_type, +# const char __user *_description, +# const void __user *_payload, +# size_t plen, +# key_serial_t ringid) +# + +@define _SYSCALL_ADD_KEY_NAME +%( + name = "add_key" +%) + +@define _SYSCALL_ADD_KEY_ARGSTR +%( + argstr = sprintf("%s, %s, %s, %u, %d", + user_string_quoted(type_uaddr), + user_string_quoted(description_uaddr), + user_buffer_quoted(payload_uaddr, plen, syscall_string_trunc), + plen, ringid) +%) + +probe syscall.add_key = dw_syscall.add_key !, nd_syscall.add_key {} +probe syscall.add_key.return = dw_syscall.add_key.return !, nd_syscall.add_key.return {} + +# dw_add_key _____________________________________________________ + +probe dw_syscall.add_key = kernel.function("sys_add_key").call ? +{ + @_SYSCALL_ADD_KEY_NAME + type_uaddr = $_type + description_uaddr = $_description + payload_uaddr = $_payload + plen = __ulong($plen) + ringid = __int32($ringid) + @_SYSCALL_ADD_KEY_ARGSTR +} +probe dw_syscall.add_key.return = kernel.function("sys_add_key").return ? +{ + @_SYSCALL_ADD_KEY_NAME + retstr = return_str(1, $return) +} + +# nd_add_key _____________________________________________________ + +probe nd_syscall.add_key = kprobe.function("sys_add_key") ? +{ + @_SYSCALL_ADD_KEY_NAME + asmlinkage() + type_uaddr = pointer_arg(1) + description_uaddr = pointer_arg(2) + payload_uaddr = pointer_arg(3) + plen = ulong_arg(4) + ringid = int_arg(5) + @_SYSCALL_ADD_KEY_ARGSTR +} +probe nd_syscall.add_key.return = kprobe.function("sys_add_key").return ? +{ + @_SYSCALL_ADD_KEY_NAME + retstr = returnstr(1) +} diff --git a/tapset/linux/syscalls.stp b/tapset/linux/syscalls.stp index 722adbd02..d490f1b2f 100644 --- a/tapset/linux/syscalls.stp +++ b/tapset/linux/syscalls.stp @@ -1,36 +1,4 @@ -# add_key ____________________________________________________ -# long sys_add_key(const char __user *_type, -# const char __user *_description, -# const void __user *_payload, -# size_t plen, -# key_serial_t ringid) -# -probe syscall.add_key = kernel.function("sys_add_key").call ? -{ - name = "add_key" - type_uaddr = $_type -# 'description_auddr' should have been 'description_uaddr'. Deprecate -# the old name. -%(systemtap_v <= "1.4" %? - description_auddr = $_description -%) - description_uaddr = $_description - payload_uaddr = $_payload - plen = __ulong($plen) - ringid = __int32($ringid) - argstr = sprintf("%s, %s, %s, %u, %d", - user_string_quoted($_type), - user_string_quoted($_description), - user_buffer_quoted($_payload, $plen, syscall_string_trunc), - __ulong($plen), __int32($ringid)) -} -probe syscall.add_key.return = kernel.function("sys_add_key").return ? -{ - name = "add_key" - retstr = return_str(1, $return) -} - # adjtimex ___________________________________________________ # long sys_adjtimex(struct timex __user *txc_p) probe syscall.adjtimex = kernel.function("sys_adjtimex").call