diff options
Diffstat (limited to 'tapset')
-rw-r--r-- | tapset/context.stp | 6 | ||||
-rw-r--r-- | tapset/conversions.stp | 5 | ||||
-rw-r--r-- | tapset/s390x/syscalls.stp | 24 |
3 files changed, 24 insertions, 11 deletions
diff --git a/tapset/context.stp b/tapset/context.stp index 6fad3740..fcb60201 100644 --- a/tapset/context.stp +++ b/tapset/context.stp @@ -14,6 +14,12 @@ %{ #include <asm/processor.h> + +#if defined(__powerpc64__) +#if !defined(task_pt_regs) +#define task_pt_regs(tsk) ((struct pt_regs *)(tsk)->thread.regs) +#endif +#endif %} /** diff --git a/tapset/conversions.stp b/tapset/conversions.stp index 70725e9d..31b16821 100644 --- a/tapset/conversions.stp +++ b/tapset/conversions.stp @@ -120,6 +120,8 @@ function user_string_n2:string (addr:long, n:long, err_msg:string) %{ /* pure */ (char __user *) (uintptr_t) THIS->addr, len) < 0) strlcpy(THIS->__retvalue, THIS->err_msg, MAXSTRINGLEN); + else + THIS->__retvalue[len - 1] = '\0'; %} function user_string_n_warn:string (addr:long, n:long) %{ /* pure */ @@ -137,7 +139,8 @@ function user_string_n_warn:string (addr:long, n:long) %{ /* pure */ (void *) (uintptr_t) THIS->addr); _stp_warn(CONTEXT->error_buffer); strlcpy (THIS->__retvalue, "<unknown>", MAXSTRINGLEN); - } + } else + THIS->__retvalue[len - 1] = '\0'; %} function user_string_n_quoted:string (addr:long, n:long) %{ /* pure */ diff --git a/tapset/s390x/syscalls.stp b/tapset/s390x/syscalls.stp index 07cb0577..17988ace 100644 --- a/tapset/s390x/syscalls.stp +++ b/tapset/s390x/syscalls.stp @@ -45,19 +45,21 @@ probe syscall.ipc.return = kernel.function("sys_ipc").return ? { # long old_mmap(struct mmap_arg_struct __user *arg) # long old32_mmap(struct mmap_arg_struct_emu31 __user *arg) # -probe syscall.mmap = kernel.function("old_mmap"), - kernel.function("old32_mmap") +probe syscall.mmap = kernel.function("old_mmap") ?, + kernel.function("old32_mmap") ?, + kernel.function("SyS_s390_old_mmap") ? { name = "mmap" - if (probefunc() == "old_mmap") + if ((probefunc() == "old_mmap") || (probefunc() == "SyS_s390_old_mmap")) argstr = get_mmap_args($arg) else argstr = get_32mmap_args($arg) } -probe syscall.mmap.return = kernel.function("old_mmap").return, - kernel.function("old32_mmap").return +probe syscall.mmap.return = kernel.function("old_mmap").return ?, + kernel.function("old32_mmap").return ?, + kernel.function("SyS_s390_old_mmap").return ? { name = "mmap" retstr = returnstr(2) @@ -69,19 +71,21 @@ probe syscall.mmap.return = kernel.function("old_mmap").return, # long sys_mmap2(struct mmap_arg_struct __user *arg) # long sys32_mmap2(struct mmap_arg_struct_emu31 __user *arg) # -probe syscall.mmap2 = kernel.function("sys_mmap2"), - kernel.function("sys32_mmap2") +probe syscall.mmap2 = kernel.function("sys_mmap2") ?, + kernel.function("sys32_mmap2") ?, + kernel.function("SyS_mmap2") ? { name = "mmap2" - if (probefunc() == "sys_mmap2") + if ((probefunc() == "sys_mmap2") || (probefunc() == "SyS_mmap2")) argstr = get_mmap_args($arg) else argstr = get_32mmap_args($arg) } -probe syscall.mmap2.return = kernel.function("sys_mmap2").return, - kernel.function("sys32_mmap2").return +probe syscall.mmap2.return = kernel.function("sys_mmap2").return ?, + kernel.function("sys32_mmap2").return ?, + kernel.function("SyS_mmap2").return ? { name = "mmap2" retstr = returnstr(2) |