Skip to content

Commit 7ad7859

Browse files
pcacjrsmfrench
authored andcommitted
smb: client: Add tracepoint for krb5 auth
Add tracepoint to help debugging krb5 auth failures. Example: $ trace-cmd record -e smb3_kerberos_auth $ mount.cifs ... $ trace-cmd report mount.cifs-1667 [003] ..... 5810.668549: smb3_kerberos_auth: vers=2 host=w22-dc1.zelda.test ip=192.168.124.30:445 sec=krb5 uid=0 cruid=0 user=root pid=1667 upcall_target=app err=-126 Signed-off-by: Paulo Alcantara (Red Hat) <pc@manguebit.org> Reviewed-by: David Howells <dhowells@redhat.com> Cc: Pierguido Lambri <plambri@redhat.com> Cc: linux-cifs@vger.kernel.org Signed-off-by: Steve French <stfrench@microsoft.com>
1 parent a8fce7c commit 7ad7859

4 files changed

Lines changed: 45 additions & 2 deletions

File tree

fs/smb/client/cifs_spnego.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ cifs_get_spnego_key(struct cifs_ses *sesInfo,
159159
cifs_dbg(FYI, "key description = %s\n", description);
160160
scoped_with_creds(spnego_cred)
161161
spnego_key = request_key(&cifs_spnego_key_type, description, "");
162+
trace_smb3_kerberos_auth(server, sesInfo, PTR_ERR_OR_ZERO(spnego_key));
162163

163164
#ifdef CONFIG_CIFS_DEBUG2
164165
if (cifsFYI && !IS_ERR(spnego_key)) {

fs/smb/client/smb2pdu.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1695,8 +1695,6 @@ SMB2_auth_kerberos(struct SMB2_sess_data *sess_data)
16951695
spnego_key = cifs_get_spnego_key(ses, server);
16961696
if (IS_ERR(spnego_key)) {
16971697
rc = PTR_ERR(spnego_key);
1698-
if (rc == -ENOKEY)
1699-
cifs_dbg(VFS, "Verify user has a krb5 ticket and keyutils is installed\n");
17001698
spnego_key = NULL;
17011699
goto out;
17021700
}

fs/smb/client/trace.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@
55
* Author(s): Steve French <stfrench@microsoft.com>
66
*/
77
#include "cifsglob.h"
8+
#include "cifs_spnego.h"
89
#define CREATE_TRACE_POINTS
910
#include "trace.h"

fs/smb/client/trace.h

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1692,6 +1692,49 @@ DEFINE_SMB3_CREDIT_EVENT(waitff_credits);
16921692
DEFINE_SMB3_CREDIT_EVENT(overflow_credits);
16931693
DEFINE_SMB3_CREDIT_EVENT(set_credits);
16941694

1695+
TRACE_EVENT(smb3_kerberos_auth,
1696+
TP_PROTO(struct TCP_Server_Info *server,
1697+
struct cifs_ses *ses,
1698+
int rc),
1699+
TP_ARGS(server, ses, rc),
1700+
TP_STRUCT__entry(
1701+
__field(pid_t, pid)
1702+
__field(uid_t, uid)
1703+
__field(uid_t, cruid)
1704+
__string(host, server->hostname)
1705+
__string(user, ses->user_name)
1706+
__array(__u8, addr, sizeof(struct sockaddr_storage))
1707+
__array(char, sec, sizeof("ntlmsspi"))
1708+
__array(char, upcall_target, sizeof("mount"))
1709+
__field(int, rc)
1710+
),
1711+
TP_fast_assign(
1712+
__entry->pid = current->pid;
1713+
__entry->uid = from_kuid_munged(&init_user_ns, ses->linux_uid);
1714+
__entry->cruid = from_kuid_munged(&init_user_ns, ses->cred_uid);
1715+
__assign_str(host);
1716+
__assign_str(user);
1717+
memcpy(__entry->addr, &server->dstaddr, sizeof(__entry->addr));
1718+
1719+
if (server->sec_kerberos)
1720+
memcpy(__entry->sec, "krb5", sizeof("krb5"));
1721+
else if (server->sec_mskerberos)
1722+
memcpy(__entry->sec, "mskrb5", sizeof("mskrb5"));
1723+
else if (server->sec_iakerb)
1724+
memcpy(__entry->sec, "iakerb", sizeof("iakerb"));
1725+
else
1726+
memcpy(__entry->sec, "krb5", sizeof("krb5"));
1727+
1728+
if (ses->upcall_target == UPTARGET_MOUNT)
1729+
memcpy(__entry->upcall_target, "mount", sizeof("mount"));
1730+
else
1731+
memcpy(__entry->upcall_target, "app", sizeof("app"));
1732+
__entry->rc = rc;
1733+
),
1734+
TP_printk("vers=%d host=%s ip=%pISpsfc sec=%s uid=%d cruid=%d user=%s pid=%d upcall_target=%s err=%d",
1735+
CIFS_SPNEGO_UPCALL_VERSION, __get_str(host), __entry->addr,
1736+
__entry->sec, __entry->uid, __entry->cruid, __get_str(user),
1737+
__entry->pid, __entry->upcall_target, __entry->rc))
16951738

16961739
TRACE_EVENT(smb3_tcon_ref,
16971740
TP_PROTO(unsigned int tcon_debug_id, int ref,

0 commit comments

Comments
 (0)