[PATCH 10/16] nvme-fabrics: parse options 'keyring' and 'tls_key'
Sagi Grimberg
sagi at grimberg.me
Wed Aug 9 02:56:37 PDT 2023
On 8/8/23 19:53, Hannes Reinecke wrote:
> Parse the fabrics options 'keyring' and 'tls_key' and store the
> referenced keys in the options structure.
>
> Signed-off-by: Hannes Reinecke <hare at suse.de>
> ---
> drivers/nvme/host/fabrics.c | 71 ++++++++++++++++++++++++++++++++++++-
> drivers/nvme/host/fabrics.h | 6 ++++
> drivers/nvme/host/tcp.c | 11 ++++--
> 3 files changed, 84 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/nvme/host/fabrics.c b/drivers/nvme/host/fabrics.c
> index ddad482c3537..df986a7641a3 100644
> --- a/drivers/nvme/host/fabrics.c
> +++ b/drivers/nvme/host/fabrics.c
> @@ -622,6 +622,41 @@ static struct nvmf_transport_ops *nvmf_lookup_transport(
> return NULL;
> }
>
> +static int parse_key(struct nvmf_ctrl_options *opts, int key_id,
> + bool is_key)
> +{
> + struct key *key = NULL;
> +
> + if (key_id < 0) {
> + pr_err("Invalid %s id %d\n",
> + is_key ? "key" : "keyring", key_id);
> + return -EINVAL;
> + }
> + if (key_id) {
> + key = key_lookup(key_id);
> + if (!key) {
> + pr_err("%s id %08x not found\n",
> + is_key ? "Key" : "Keyring", key_id);
> + return -ENOKEY;
> + }
> + } else {
> + if (is_key)
> + pr_debug("Using 'best' PSK\n");
> + else
> + pr_debug("Using default keyring\n");
> + key = NULL;
Not sure I understand the else case here.
Why do we allow key_id = 0 if it does not represent
a valid existing key_id?
> + }
> + if (is_key) {
> + key_put(opts->tls_key);
> + opts->tls_key = key;
> + } else {
> + key_put(opts->keyring);
> + opts->keyring = key;
> + }
> +
Perhaps instead of is_key, just return the key and assign outside.
More information about the Linux-nvme
mailing list