Lines Matching full:dk
154 static void free_direct_key(struct fscrypt_direct_key *dk) in free_direct_key() argument
156 if (dk) { in free_direct_key()
157 fscrypt_destroy_prepared_key(&dk->dk_key); in free_direct_key()
158 kfree_sensitive(dk); in free_direct_key()
162 void fscrypt_put_direct_key(struct fscrypt_direct_key *dk) in fscrypt_put_direct_key() argument
164 if (!refcount_dec_and_lock(&dk->dk_refcount, &fscrypt_direct_keys_lock)) in fscrypt_put_direct_key()
166 hash_del(&dk->dk_node); in fscrypt_put_direct_key()
169 free_direct_key(dk); in fscrypt_put_direct_key()
183 struct fscrypt_direct_key *dk; in find_or_insert_direct_key() local
196 hash_for_each_possible(fscrypt_direct_keys, dk, dk_node, hash_key) { in find_or_insert_direct_key()
198 dk->dk_descriptor, FSCRYPT_KEY_DESCRIPTOR_SIZE) != 0) in find_or_insert_direct_key()
200 if (ci->ci_mode != dk->dk_mode) in find_or_insert_direct_key()
202 if (!fscrypt_is_key_prepared(&dk->dk_key, ci)) in find_or_insert_direct_key()
204 if (crypto_memneq(raw_key, dk->dk_raw, ci->ci_mode->keysize)) in find_or_insert_direct_key()
207 refcount_inc(&dk->dk_refcount); in find_or_insert_direct_key()
210 return dk; in find_or_insert_direct_key()
222 struct fscrypt_direct_key *dk; in fscrypt_get_direct_key() local
226 dk = find_or_insert_direct_key(NULL, raw_key, ci); in fscrypt_get_direct_key()
227 if (dk) in fscrypt_get_direct_key()
228 return dk; in fscrypt_get_direct_key()
231 dk = kzalloc(sizeof(*dk), GFP_KERNEL); in fscrypt_get_direct_key()
232 if (!dk) in fscrypt_get_direct_key()
234 refcount_set(&dk->dk_refcount, 1); in fscrypt_get_direct_key()
235 dk->dk_mode = ci->ci_mode; in fscrypt_get_direct_key()
236 err = fscrypt_prepare_key(&dk->dk_key, raw_key, ci); in fscrypt_get_direct_key()
239 memcpy(dk->dk_descriptor, ci->ci_policy.v1.master_key_descriptor, in fscrypt_get_direct_key()
241 memcpy(dk->dk_raw, raw_key, ci->ci_mode->keysize); in fscrypt_get_direct_key()
243 return find_or_insert_direct_key(dk, raw_key, ci); in fscrypt_get_direct_key()
246 free_direct_key(dk); in fscrypt_get_direct_key()
254 struct fscrypt_direct_key *dk; in setup_v1_file_key_direct() local
256 dk = fscrypt_get_direct_key(ci, raw_master_key); in setup_v1_file_key_direct()
257 if (IS_ERR(dk)) in setup_v1_file_key_direct()
258 return PTR_ERR(dk); in setup_v1_file_key_direct()
259 ci->ci_direct_key = dk; in setup_v1_file_key_direct()
260 ci->ci_enc_key = dk->dk_key; in setup_v1_file_key_direct()