diff --git a/security/keys/key.c b/security/keys/key.c index 51d23c6234247ec53d708932d0d453023f6908e0..2751ab4a7946ca3ec286e34174577cd2c4c6f52e 100644 --- a/security/keys/key.c +++ b/security/keys/key.c @@ -907,6 +907,16 @@ key_ref_t key_create_or_update(key_ref_t keyring_ref, */ __key_link_end(keyring, &index_key, edit); + 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; }