diff -drupN a/security/keys/encrypted-keys/encrypted.c b/security/keys/encrypted-keys/encrypted.c --- a/security/keys/encrypted-keys/encrypted.c 2018-08-06 17:23:04.000000000 +0300 +++ b/security/keys/encrypted-keys/encrypted.c 2022-06-12 05:28:14.000000000 +0300 @@ -313,7 +313,7 @@ static struct key *request_user_key(cons goto error; down_read(&ukey->sem); - upayload = user_key_payload(ukey); + upayload = user_key_payload_locked(ukey); if (!upayload) { /* key was revoked before we acquired its semaphore */ up_read(&ukey->sem); @@ -933,7 +933,7 @@ static long encrypted_read(const struct size_t asciiblob_len; int ret; - epayload = rcu_dereference_key(key); + epayload = dereference_key_locked(key); /* returns the hex encoded iv, encrypted-data, and hmac as ascii */ asciiblob_len = epayload->datablob_len + ivsize + 1