From d13bc40cb3ee1904866e4e0c660162706e5f4d2b Mon Sep 17 00:00:00 2001 From: Steve Dickson Date: Fri, 7 Jan 2011 15:28:08 -0500 Subject: Add code for debugging nfs_access with secure mounts Signed-off-by: Steve Dickson --- gss/gss_match.stp | 33 +++++++++++++++++++++++++++++++++ tapset/rpc_cred.stp | 14 ++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 tapset/rpc_cred.stp diff --git a/gss/gss_match.stp b/gss/gss_match.stp index 3d1f14e..1ca3454 100644 --- a/gss/gss_match.stp +++ b/gss/gss_match.stp @@ -1,8 +1,41 @@ +global mask + +probe module("nfs").function("nfs_do_access") { + mask = $mask +} +probe module("nfs").function("nfs_do_access").return { + printf("nfs_do_access(%s): mask %s return %d \n", execname(), file_modes(mask), $return); +} +probe module("nfs").function("nfs4_proc_access").return { + printf("nfs4_proc_access(%s): return %d \n", execname(), $return); +} probe module("auth_rpcgss").function("gss_match") { printf("gss_match(%s): uid %d \n", execname(), $acred->uid); } probe module("auth_rpcgss").function("gss_match").return { printf("gss_match(%s): return %d \n", execname(), $return); } +probe module("auth_rpcgss").function("gss_lookup_cred").return { + printf("gss_lookup_cred(%s): %s \n", execname(), rpc_cred_uid($return)); + //print_stack(backtrace()); +} +probe module("auth_rpcgss").function("gss_refresh").return { + printf("gss_lookup_cred(%s): %d \n", execname(), $return); +} +probe module("sunrpc").function("rpcauth_lookup_credcache").return { + printf("rpcauth_lookup_credcache(%s): %s \n", execname(), rpc_cred_uid($return)); +} +probe module("sunrpc").function("rpcauth_lookupcred").return { + printf("rpcauth_lookupcred(%s): %s \n", execname(), rpc_cred_uid($return)); +} +probe module("sunrpc").function("rpc_lookup_machine_cred").return { + printf("rpc_lookup_machine_cred(%s): %s \n", execname(), rpc_cred_uid($return)); +} +probe module("sunrpc").function("rpcauth_bind_root_cred") { + printf("rpcauth_bind_root_cred(%s): %p \n", execname(), $task); +} +probe module("sunrpc").function("rpcauth_generic_bind_cred") { + printf("rpcauth_generic_bind_cred(%s): %p \n", execname(), $task); +} probe begin { log("starting gss probe") } probe end { log("ending gss probe") } diff --git a/tapset/rpc_cred.stp b/tapset/rpc_cred.stp new file mode 100644 index 0000000..441a0bf --- /dev/null +++ b/tapset/rpc_cred.stp @@ -0,0 +1,14 @@ +%{ +#include +#include +#include +%} + +function rpc_cred_uid:string(_cred:long) +%{ + struct rpc_cred *cred = (struct rpc_cred *)(long) kread(&(THIS->_cred)); + + snprintf(THIS->__retvalue, MAXSTRINGLEN, "uid=%d", cred->cr_uid); + + CATCH_DEREF_FAULT(); +%} -- cgit