summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Dickson <steved@redhat.com>2011-11-12 08:55:42 -0500
committerSteve Dickson <steved@redhat.com>2011-11-12 08:55:42 -0500
commit8dc5f487ec8f810704bdc70191d7b4e71f5f6174 (patch)
treeae615a846f68fec6e34b08b73150b4369c2c5be5
parent1fab51bf18976626f580d99349eee1b6008c6a77 (diff)
downloadsystemtap-8dc5f487ec8f810704bdc70191d7b4e71f5f6174.tar.gz
systemtap-8dc5f487ec8f810704bdc70191d7b4e71f5f6174.tar.xz
systemtap-8dc5f487ec8f810704bdc70191d7b4e71f5f6174.zip
Added key ring probs
Signed-off-by: Steve Dickson <steved@redhat.com>
-rw-r--r--nfs/nfs_idmap.stp86
-rw-r--r--tapset/iserr.stp11
-rw-r--r--tapset/key.stp12
3 files changed, 109 insertions, 0 deletions
diff --git a/nfs/nfs_idmap.stp b/nfs/nfs_idmap.stp
new file mode 100644
index 0000000..5591f13
--- /dev/null
+++ b/nfs/nfs_idmap.stp
@@ -0,0 +1,86 @@
+probe module("nfs").function("nfs_map_name_to_uid").return
+{
+ if ($return < 0)
+ printf("nfs_map_name_to_uid: '%s' --> %d(%s)\n", kernel_string($name),
+ $return, errno_str($return));
+ else
+ printf("nfs_map_name_to_uid: '%s' --> %d\n", kernel_string($name), $return);
+}
+probe module("nfs").function("nfs_idmap_request_key").return
+{
+ if ($return < 0)
+ printf(" nfs_idmap_request_key: %d(%s)\n", $return, errno_str($return));
+ else
+ printf(" nfs_idmap_request_key: %d\n", $return);
+}
+probe kernel.function("call_sbin_request_key").return
+{
+ if ($return < 0)
+ printf(" call_sbin_request_key: %d(%s)\n", $return, errno_str($return));
+ else
+ printf(" call_sbin_request_key: %d\n", $return);
+}
+probe kernel.function("call_usermodehelper_exec").return
+{
+ if ($return < 0)
+ printf(" call_usermodehelper_exec: %d(%s)\n", $return, errno_str($return));
+ else
+ printf(" call_usermodehelper_exec: %d\n", $return);
+}
+probe kernel.function("call_usermodehelper_setup").return
+{
+ if (is_err($return))
+ printf(" call_usermodehelper_setup: path %s %ld(%s)\n",
+ kernel_string($path), $return, errno_str($return));
+ else
+ printf(" call_usermodehelper_setup: path %s\n argv %s %s %s %s %s %s %s %s\n",
+ kernel_string($path), kernel_string($argv[0]), kernel_string($argv[1]),
+ kernel_string($argv[2]), kernel_string($argv[3]), kernel_string($argv[4]),
+ kernel_string($argv[5]), kernel_string($argv[6]), kernel_string($argv[7]));
+}
+probe kernel.function("request_key_and_link")
+{
+ printf(" request_key_and_link: type %s desc %s callout %p(%d)\n",
+ key_type($type), kernel_string($description), $callout_info, $callout_len);
+}
+probe kernel.function("request_key_and_link").return
+{
+ if (is_err($return))
+ printf(" request_key_and_link: desc %s %ld(%s)\n",
+ kernel_string($description), $return, errno_str($return));
+ else
+ printf(" request_key_and_link: desc %s %p\n",
+ kernel_string($description), $return);
+}
+/*
+probe kernel.function("key_user_lookup").return
+{
+ if (is_err($return))
+ printf(" key_user_lookup: uid %d %ld(%s)\n",
+ $uid, $return, errno_str($return));
+ else
+ printf(" key_user_lookup: uid %d %p\n",
+ $uid, $return);
+}
+probe kernel.function("search_process_keyrings").return
+{
+ if (is_err($return))
+ printf(" search_process_keyrings: %ld (%s)\n", $return, errno_str($return));
+ else
+ printf(" search_process_keyrings: %p\n", $return);
+}
+probe kernel.function("search_my_process_keyrings").return
+{
+ if (is_err($return))
+ printf(" search_my_process_keyrings: %ld(%s)\n", $return, errno_str($return));
+ else
+ printf(" search_my_process_keyrings: %p\n", $return);
+}
+probe module("nfs").function("nfs_idmap_get_desc").return
+{
+ printf(" nfs_idmap_get_desc: %d\n", $return);
+}
+*/
+probe begin { log("starting nfsidmap probe") }
+probe end { log("ending nfsidmap probe") }
+
diff --git a/tapset/iserr.stp b/tapset/iserr.stp
new file mode 100644
index 0000000..26207fd
--- /dev/null
+++ b/tapset/iserr.stp
@@ -0,0 +1,11 @@
+%{
+#include <linux/types.h>
+#include <linux/err.h>
+%}
+
+function is_err:long(_ptr:long)
+%{
+ THIS->__retvalue = (long)IS_ERR((char *)THIS->_ptr);
+
+ CATCH_DEREF_FAULT();
+%}
diff --git a/tapset/key.stp b/tapset/key.stp
new file mode 100644
index 0000000..7a40d7d
--- /dev/null
+++ b/tapset/key.stp
@@ -0,0 +1,12 @@
+%{
+#include <linux/key-type.h>
+%}
+
+function key_type:string(_ptr:long)
+%{
+ struct key_type *type = (struct key_type *)(long)kread(&(THIS->_ptr));
+
+ snprintf(THIS->__retvalue, MAXSTRINGLEN, "%s", type->name);
+
+ CATCH_DEREF_FAULT();
+%}