]> sourceware.org Git - systemtap.git/commitdiff
PR20333/chmod
authorMartin Cermak <mcermak@redhat.com>
Thu, 22 Dec 2016 13:27:34 +0000 (14:27 +0100)
committerMartin Cermak <mcermak@redhat.com>
Thu, 22 Dec 2016 13:27:34 +0000 (14:27 +0100)
tapset/linux/nd_syscalls.stp
tapset/linux/sysc_chmod.stp [new file with mode: 0644]
tapset/linux/syscalls.stp

index b6f8f2e4b3ed0a48565a3a4090500ae309cf45b8..95c1051e49127372d75f24de5de723ec15c0a282 100644 (file)
@@ -1,20 +1,4 @@
 
-# chmod ______________________________________________________
-# long sys_chmod(const char __user * filename, mode_t mode)
-probe nd_syscall.chmod = kprobe.function("sys_chmod") ?
-{
-       name = "chmod"
-       asmlinkage()
-       path = user_string_quoted(pointer_arg(1))
-       mode = uint_arg(2)
-       argstr = sprintf("%s, %#o", user_string_quoted(pointer_arg(1)), mode)
-}
-probe nd_syscall.chmod.return = kprobe.function("sys_chmod").return ?
-{
-       name = "chmod"
-       retstr = returnstr(1)
-}
-
 # chown ______________________________________________________
 # long sys_chown(const char __user * filename, uid_t user, gid_t group)
 probe nd_syscall.chown = kprobe.function("sys_chown") ?
diff --git a/tapset/linux/sysc_chmod.stp b/tapset/linux/sysc_chmod.stp
new file mode 100644 (file)
index 0000000..defb1d7
--- /dev/null
@@ -0,0 +1,53 @@
+# chmod ______________________________________________________
+# long sys_chmod(const char __user * filename, mode_t mode)
+
+@define _SYSCALL_CHMOD_NAME
+%(
+       name = "chmod"
+%)
+
+@define _SYSCALL_CHMOD_ARGSTR
+%(
+       argstr = sprintf("%s, %#o", path, mode)
+%)
+
+probe syscall.chmod = dw_syscall.chmod !, nd_syscall.chmod {}
+probe syscall.chmod.return = dw_syscall.chmod.return !, nd_syscall.chmod.return {}
+
+# dw_chmod _____________________________________________________
+
+probe dw_syscall.chmod = kernel.function("sys_chmod").call
+{
+       @_SYSCALL_CHMOD_NAME
+       path = user_string_quoted($filename)
+%( arch == "i386" %?
+       # Why @cast() here? Even though the user passes an unsigned
+       # int (32-bits), some kernels (2.6.32-431.el6.i686) get an
+       # unsigned short (16-bits).
+       mode = @cast(&$mode, "unsigned int")
+%:
+       mode = __uint32($mode)
+%)
+       @_SYSCALL_CHMOD_ARGSTR
+}
+probe dw_syscall.chmod.return = kernel.function("sys_chmod").return
+{
+       @_SYSCALL_CHMOD_NAME
+       retstr = return_str(1, $return)
+}
+
+# nd_chmod _____________________________________________________
+
+probe nd_syscall.chmod = kprobe.function("sys_chmod") ?
+{
+       @_SYSCALL_CHMOD_NAME
+       asmlinkage()
+       path = user_string_quoted(pointer_arg(1))
+       mode = uint_arg(2)
+       @_SYSCALL_CHMOD_ARGSTR
+}
+probe nd_syscall.chmod.return = kprobe.function("sys_chmod").return ?
+{
+       @_SYSCALL_CHMOD_NAME
+       retstr = returnstr(1)
+}
index c04186aea0292bd9c1344b12cb65e4d693b08ca0..a02d71eaf3d397688a0f0f620a94dc5c4809afc0 100644 (file)
@@ -1,26 +1,4 @@
 
-# chmod ______________________________________________________
-# long sys_chmod(const char __user * filename, mode_t mode)
-probe syscall.chmod = kernel.function("sys_chmod").call
-{
-       name = "chmod"
-       path = user_string_quoted($filename)
-%( arch == "i386" %?
-       # Why @cast() here? Even though the user passes an unsigned
-       # int (32-bits), some kernels (2.6.32-431.el6.i686) get an
-       # unsigned short (16-bits).
-       mode = @cast(&$mode, "unsigned int")
-%:
-       mode = __uint32($mode)
-%)
-       argstr = sprintf("%s, %#o", user_string_quoted($filename), mode)
-}
-probe syscall.chmod.return = kernel.function("sys_chmod").return
-{
-       name = "chmod"
-       retstr = return_str(1, $return)
-}
-
 # chown ______________________________________________________
 # long sys_chown(const char __user * filename, uid_t user, gid_t group)
 probe syscall.chown = kernel.function("sys_chown").call
This page took 0.06171 seconds and 5 git commands to generate.