diff options
Diffstat (limited to 'tapset/x86_64/syscalls.stp')
-rw-r--r-- | tapset/x86_64/syscalls.stp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/tapset/x86_64/syscalls.stp b/tapset/x86_64/syscalls.stp index 5ad064a2..28fa2969 100644 --- a/tapset/x86_64/syscalls.stp +++ b/tapset/x86_64/syscalls.stp @@ -85,10 +85,13 @@ probe syscall.mmap = kernel.function("sys_mmap") ? len = $len prot = $prot flags = $flags - fd = $fd + # Although the kernel gets an unsigned long fd, on the + # user-side it is a signed int. Fix this. + fd = __int32($fd) offset = $off argstr = sprintf("%p, %d, %s, %s, %d, %d", $addr, $len, - _mprotect_prot_str($prot), _mmap_flags($flags), $fd, $off) + _mprotect_prot_str($prot), _mmap_flags($flags), + __int32($fd), $off) } probe syscall.mmap.return = kernel.function("sys_mmap").return ? @@ -119,7 +122,8 @@ probe syscall.mmap2 = kernel.function("sys32_mmap2") ? { name = "mmap2" argstr = sprintf("%p, %d, %s, %s, %d, %d", $addr, $len, - _mprotect_prot_str($prot), _mmap_flags($flags), $fd, $pgoff) + _mprotect_prot_str($prot), _mmap_flags($flags), + __int32($fd), $pgoff) } probe syscall.mmap2.return = kernel.function("sys32_mmap2").return ? |