diff --git a/security/keys/key.c b/security/keys/key.c index 6595b2dd89fe..6373ff18b8ea 100644 --- a/security/keys/key.c +++ b/security/keys/key.c @@ -897,6 +897,16 @@ error: */ __key_link_end(keyring, ktype, prealloc); + key = key_ref_to_ptr(key_ref); + if (test_bit(KEY_FLAG_USER_CONSTRUCT, &key->flags)) { + ret = wait_for_key_construction(key, true); + if (ret < 0) { + key_ref_put(key_ref); + key_ref = ERR_PTR(ret); + goto error_free_prep; + } + } + key_ref = __key_update(key_ref, &prep); goto error_free_prep; }