Lines Matching refs: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 crypto_free_skcipher(dk->dk_ctfm); in free_direct_key()
158 kzfree(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 (crypto_memneq(raw_key, dk->dk_raw, ci->ci_mode->keysize)) in find_or_insert_direct_key()
205 refcount_inc(&dk->dk_refcount); in find_or_insert_direct_key()
208 return dk; in find_or_insert_direct_key()
220 struct fscrypt_direct_key *dk; in fscrypt_get_direct_key() local
224 dk = find_or_insert_direct_key(NULL, raw_key, ci); in fscrypt_get_direct_key()
225 if (dk) in fscrypt_get_direct_key()
226 return dk; in fscrypt_get_direct_key()
229 dk = kzalloc(sizeof(*dk), GFP_NOFS); in fscrypt_get_direct_key()
230 if (!dk) in fscrypt_get_direct_key()
232 refcount_set(&dk->dk_refcount, 1); in fscrypt_get_direct_key()
233 dk->dk_mode = ci->ci_mode; in fscrypt_get_direct_key()
234 dk->dk_ctfm = fscrypt_allocate_skcipher(ci->ci_mode, raw_key, in fscrypt_get_direct_key()
236 if (IS_ERR(dk->dk_ctfm)) { in fscrypt_get_direct_key()
237 err = PTR_ERR(dk->dk_ctfm); in fscrypt_get_direct_key()
238 dk->dk_ctfm = NULL; in fscrypt_get_direct_key()
241 memcpy(dk->dk_descriptor, ci->ci_policy.v1.master_key_descriptor, in fscrypt_get_direct_key()
243 memcpy(dk->dk_raw, raw_key, ci->ci_mode->keysize); in fscrypt_get_direct_key()
245 return find_or_insert_direct_key(dk, raw_key, ci); in fscrypt_get_direct_key()
248 free_direct_key(dk); in fscrypt_get_direct_key()
257 struct fscrypt_direct_key *dk; in setup_v1_file_key_direct() local
277 dk = fscrypt_get_direct_key(ci, raw_master_key); in setup_v1_file_key_direct()
278 if (IS_ERR(dk)) in setup_v1_file_key_direct()
279 return PTR_ERR(dk); in setup_v1_file_key_direct()
280 ci->ci_direct_key = dk; in setup_v1_file_key_direct()
281 ci->ci_ctfm = dk->dk_ctfm; in setup_v1_file_key_direct()