tapset/nd_syscalls2.stp has: # FIXME: needs to handle sys_pipe2 # FIXME: needs to support pipe0/pipe1
From syscalls2.stp: ---- # pipe _______________________________________________________ # # asmlinkage int # sys_pipe(unsigned long __user * fildes) # # SYSCALL_DEFINE2(pipe2, int __user *, fildes, int, flags) # pipe2() was added to Linux in version 2.6.27. probe syscall.pipe = kernel.function("sys_pipe2").call !, kernel.function("sys_ia64_pipe").call ?, kernel.function("sys_pipe").call ---- The reason why it is done this way is that in the kernel sys_pipe is just a wrapper around sys_pipe2. This way we ignore the sys_pipe call, and only catch the sys_pipe2 call on kernels with sys_pipe2. Unfortunately, as bug #11424 notes, '!' (optional and sufficient) doesn't work for kprobe.function probes. So, the above logic will be difficult to duplicate in tapset/nd_syscalls2.stp.
Now that bug #11424 and bug #14378 are fixed, this bug can be addressed. Fixed in commit b1047bc.