On Mon, 2021-07-26 at 13:13 -0400, Eric Snowberg wrote: > diff --git a/certs/system_keyring.c b/certs/system_keyring.c > index dcaf74102ab2..b27ae30eaadc 100644 > --- a/certs/system_keyring.c > +++ b/certs/system_keyring.c > @@ -45,6 +45,15 @@ int restrict_link_by_builtin_trusted(struct key *dest_keyring, > const union key_payload *payload, > struct key *restriction_key) > { > + /* If the secondary trusted keyring is not enabled, we may link > + * through to the mok keyring and the search may follow that link. > + */ Refer to section "8) Commenting" of Documentation/process/coding- style.rst for the format of multi line comments. > + if (mok_trusted_keys && type == &key_type_keyring && > + dest_keyring == builtin_trusted_keys && > + payload == &mok_trusted_keys->payload) > + /* Allow the mok keyring to be added to the builtin */ > + return 0; > + Unless you're changing the meaning of the restriction, then a new restriction needs to be defined. In this case, please don't change the meaning of restrict_link_by_builtin_trusted(). Instead define a new restriction named restrict_link_by_builtin_and_ca_trusted(). > return restrict_link_by_signature(dest_keyring, type, payload, > builtin_trusted_keys); > } > @@ -91,6 +100,15 @@ int restrict_link_by_builtin_and_secondary_trusted( > /* Allow the builtin keyring to be added to the secondary */ > return 0; > > + /* If we have a secondary trusted keyring, it may contain a link > + * through to the mok keyring and the search may follow that link. > + */ > + if (mok_trusted_keys && type == &key_type_keyring && > + dest_keyring == secondary_trusted_keys && > + payload == &mok_trusted_keys->payload) > + /* Allow the mok keyring to be added to the secondary */ > + return 0; > + Similarly here, please define a new restriction maybe named restrict_link_by_builtin_secondary_and_ca_trusted(). To avoid code duplication, the new restriction could be a wrapper around the existing function. > return restrict_link_by_signature(dest_keyring, type, payload, > secondary_trusted_keys); > } > @@ -321,5 +339,8 @@ void __init set_platform_trusted_keys(struct key *keyring) > void __init set_mok_trusted_keys(struct key *keyring) > { > mok_trusted_keys = keyring; > + > + if (key_link(system_trusted_keys, mok_trusted_keys) < 0) > + panic("Can't link (mok) trusted keyrings\n"); > } >From the thread discussion on 00/12: Only the builtin keys should ever be on the builtin keyring. The builtin keyring would need to be linked to the mok keyring. But in the secondary keyring case, the mok keyring would be linked to the secondary keyring, similar to how the builtin keyring is linked to the secondary keyring. if (key_link(secondary_trusted_keys, builtin_trusted_keys) < 0) panic("Can't link trusted keyrings\n"); thanks, Mimi > #endif