diff options
author | David Howells <dhowells@redhat.com> | 2020-09-08 22:30:52 +0100 |
---|---|---|
committer | David Howells <dhowells@redhat.com> | 2020-11-23 18:09:29 +0000 |
commit | 0727d3ec38074d0cef3fbef1d64f2d0a92ace046 (patch) | |
tree | c34ec14a090137c8ebfcd07121637d1fcc9965c9 /net | |
parent | 8a5dc321158fb3032cf990deb7473e22826e7346 (diff) |
rxrpc: List the held token types in the key description in /proc/keys
When viewing an rxrpc-type key through /proc/keys, display a list of held
token types.
Signed-off-by: David Howells <dhowells@redhat.com>
Diffstat (limited to 'net')
-rw-r--r-- | net/rxrpc/key.c | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/net/rxrpc/key.c b/net/rxrpc/key.c index fb4d2a2fca02..197b4cf46b64 100644 --- a/net/rxrpc/key.c +++ b/net/rxrpc/key.c @@ -31,6 +31,7 @@ static void rxrpc_free_preparse_s(struct key_preparsed_payload *); static void rxrpc_destroy(struct key *); static void rxrpc_destroy_s(struct key *); static void rxrpc_describe(const struct key *, struct seq_file *); +static void rxrpc_describe_s(const struct key *, struct seq_file *); static long rxrpc_read(const struct key *, char *, size_t); /* @@ -61,7 +62,7 @@ struct key_type key_type_rxrpc_s = { .free_preparse = rxrpc_free_preparse_s, .instantiate = generic_key_instantiate, .destroy = rxrpc_destroy_s, - .describe = rxrpc_describe, + .describe = rxrpc_describe_s, }; /* @@ -495,6 +496,32 @@ static void rxrpc_destroy_s(struct key *key) */ static void rxrpc_describe(const struct key *key, struct seq_file *m) { + const struct rxrpc_key_token *token; + const char *sep = ": "; + + seq_puts(m, key->description); + + for (token = key->payload.data[0]; token; token = token->next) { + seq_puts(m, sep); + + switch (token->security_index) { + case RXRPC_SECURITY_RXKAD: + seq_puts(m, "ka"); + break; + default: /* we have a ticket we can't encode */ + seq_printf(m, "%u", token->security_index); + break; + } + + sep = " "; + } +} + +/* + * describe the rxrpc server key + */ +static void rxrpc_describe_s(const struct key *key, struct seq_file *m) +{ seq_puts(m, key->description); } |