Re: [PATCH RFC 1/8] certs: Introduce ability to link to a system key

From: Mimi Zohar
Date: Thu Apr 04 2024 - 18:41:06 EST


Hi Eric,

> diff --git a/certs/system_keyring.c b/certs/system_keyring.c
> index 9de610bf1f4b..b647be49f6e0 100644
> --- a/certs/system_keyring.c
> +++ b/certs/system_keyring.c
> @@ -426,3 +426,32 @@ void __init set_platform_trusted_keys(struct key
> *keyring)
> platform_trusted_keys = keyring;
> }
> #endif
> +
> +/**
> + * system_key_link - Link to a system key
> + * @keyring: The keyring to link into
> + * @id: The asymmetric key id to look for in the system keyring
> + */
> +int system_key_link(struct key *keyring, struct asymmetric_key_id *id)
> +{
> + struct key *tkey;
> +
> +#ifdef CONFIG_SECONDARY_TRUSTED_KEYRING
> + tkey = find_asymmetric_key(secondary_trusted_keys, id, NULL, NULL,
> false);
> +#else
> + tkey = find_asymmetric_key(builtin_trusted_keys, id, NULL, NULL, false);
> +#endif
> + if (!IS_ERR(tkey))
> + goto found;
> +
> + tkey = find_asymmetric_key(platform_trusted_keys, id, NULL, NULL,
> false);
> +
> + if (!IS_ERR(tkey))
> + goto found;
> +
> + return -1;

Normally "goto" is for the error. Invert the logic.

Mimi

> +
> +found:
> + key_link(keyring, tkey);
> + return 0;
> +}
>