diff --git a/security/keys/keyring.c b/security/keys/keyring.c index 4448758f643a57bcbcb4a7654eccf15932ff78c3..747ae047ae1cb45b13c1e98778819d44e8763cbd 100644 --- a/security/keys/keyring.c +++ b/security/keys/keyring.c @@ -772,7 +772,9 @@ static bool search_nested_keyrings(struct key *keyring, for (; slot < ASSOC_ARRAY_FAN_OUT; slot++) { ptr = READ_ONCE(node->slots[slot]); - if (assoc_array_ptr_is_meta(ptr) && node->back_pointer) + if (assoc_array_ptr_is_meta(ptr) && + (node->back_pointer || + assoc_array_ptr_is_shortcut(ptr))) goto descend_to_node; if (!keyring_ptr_is_keyring(ptr))