mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 14:53:58 -04:00
nvme-tcp: check for invalidated or revoked key
key_lookup() will always return a key, even if that key is revoked or invalidated. So check for invalid keys before continuing. Signed-off-by: Hannes Reinecke <hare@kernel.org> Reviewed-by: Sagi Grimberg <sagi@grimberg.me> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Keith Busch <kbusch@kernel.org>
This commit is contained in:
committed by
Keith Busch
parent
363895767f
commit
5bc46b49c8
@@ -20,6 +20,28 @@ key_serial_t nvme_keyring_id(void)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(nvme_keyring_id);
|
||||
|
||||
static bool nvme_tls_psk_revoked(struct key *psk)
|
||||
{
|
||||
return test_bit(KEY_FLAG_REVOKED, &psk->flags) ||
|
||||
test_bit(KEY_FLAG_INVALIDATED, &psk->flags);
|
||||
}
|
||||
|
||||
struct key *nvme_tls_key_lookup(key_serial_t key_id)
|
||||
{
|
||||
struct key *key = key_lookup(key_id);
|
||||
|
||||
if (IS_ERR(key)) {
|
||||
pr_err("key id %08x not found\n", key_id);
|
||||
return key;
|
||||
}
|
||||
if (nvme_tls_psk_revoked(key)) {
|
||||
pr_err("key id %08x revoked\n", key_id);
|
||||
return ERR_PTR(-EKEYREVOKED);
|
||||
}
|
||||
return key;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(nvme_tls_key_lookup);
|
||||
|
||||
static void nvme_tls_psk_describe(const struct key *key, struct seq_file *m)
|
||||
{
|
||||
seq_puts(m, key->description);
|
||||
|
||||
Reference in New Issue
Block a user