Lines Matching refs:mk
56 struct fscrypt_master_key *mk =
64 kfree_sensitive(mk);
67 void fscrypt_put_master_key(struct fscrypt_master_key *mk)
69 if (!refcount_dec_and_test(&mk->mk_struct_refs))
76 WARN_ON_ONCE(refcount_read(&mk->mk_active_refs) != 0);
77 key_put(mk->mk_users);
78 mk->mk_users = NULL;
79 call_rcu(&mk->mk_rcu_head, fscrypt_free_master_key);
83 struct fscrypt_master_key *mk)
87 if (!refcount_dec_and_test(&mk->mk_active_refs))
98 hlist_del_rcu(&mk->mk_node);
105 WARN_ON_ONCE(is_master_key_secret_present(&mk->mk_secret));
106 WARN_ON_ONCE(!list_empty(&mk->mk_decrypted_inodes));
110 sb, &mk->mk_direct_keys[i]);
112 sb, &mk->mk_iv_ino_lblk_64_keys[i]);
114 sb, &mk->mk_iv_ino_lblk_32_keys[i]);
116 memzero_explicit(&mk->mk_ino_hash_key,
117 sizeof(mk->mk_ino_hash_key));
118 mk->mk_ino_hash_key_initialized = false;
121 fscrypt_put_master_key(mk);
228 struct fscrypt_master_key *mk;
231 hlist_for_each_entry_safe(mk, tmp, bucket, mk_node) {
240 WARN_ON_ONCE(refcount_read(&mk->mk_active_refs) != 1);
241 WARN_ON_ONCE(refcount_read(&mk->mk_struct_refs) != 1);
242 WARN_ON_ONCE(!is_master_key_secret_present(&mk->mk_secret));
243 wipe_master_key_secret(&mk->mk_secret);
244 fscrypt_put_master_key_activeref(sb, mk);
278 struct fscrypt_master_key *mk;
294 hlist_for_each_entry_rcu(mk, bucket, mk_node) {
295 if (mk->mk_spec.type ==
297 memcmp(mk->mk_spec.u.descriptor,
300 refcount_inc_not_zero(&mk->mk_struct_refs))
305 hlist_for_each_entry_rcu(mk, bucket, mk_node) {
306 if (mk->mk_spec.type ==
308 memcmp(mk->mk_spec.u.identifier,
311 refcount_inc_not_zero(&mk->mk_struct_refs))
316 mk = NULL;
319 return mk;
322 static int allocate_master_key_users_keyring(struct fscrypt_master_key *mk)
328 mk->mk_spec.u.identifier);
336 mk->mk_users = keyring;
344 static struct key *find_master_key_user(struct fscrypt_master_key *mk)
349 format_mk_user_description(description, mk->mk_spec.u.identifier);
355 keyref = keyring_search(make_key_ref(mk->mk_users, true /*possessed*/),
372 static int add_master_key_user(struct fscrypt_master_key *mk)
378 format_mk_user_description(description, mk->mk_spec.u.identifier);
385 err = key_instantiate_and_link(mk_user, NULL, 0, mk->mk_users, NULL);
396 static int remove_master_key_user(struct fscrypt_master_key *mk)
401 mk_user = find_master_key_user(mk);
404 err = key_unlink(mk->mk_users, mk_user);
418 struct fscrypt_master_key *mk;
421 mk = kzalloc(sizeof(*mk), GFP_KERNEL);
422 if (!mk)
425 init_rwsem(&mk->mk_sem);
426 refcount_set(&mk->mk_struct_refs, 1);
427 mk->mk_spec = *mk_spec;
429 INIT_LIST_HEAD(&mk->mk_decrypted_inodes);
430 spin_lock_init(&mk->mk_decrypted_inodes_lock);
433 err = allocate_master_key_users_keyring(mk);
436 err = add_master_key_user(mk);
441 move_master_key_secret(&mk->mk_secret, secret);
442 refcount_set(&mk->mk_active_refs, 1); /* ->mk_secret is present */
445 hlist_add_head_rcu(&mk->mk_node,
451 fscrypt_put_master_key(mk);
457 static int add_existing_master_key(struct fscrypt_master_key *mk,
467 if (mk->mk_users) {
468 struct key *mk_user = find_master_key_user(mk);
476 err = add_master_key_user(mk);
482 if (!is_master_key_secret_present(&mk->mk_secret)) {
483 if (!refcount_inc_not_zero(&mk->mk_active_refs))
485 move_master_key_secret(&mk->mk_secret, secret);
496 struct fscrypt_master_key *mk;
501 mk = fscrypt_find_master_key(sb, mk_spec);
502 if (!mk) {
512 down_write(&mk->mk_sem);
513 err = add_existing_master_key(mk, secret);
514 up_write(&mk->mk_sem);
524 fscrypt_put_master_key(mk);
821 struct fscrypt_master_key *mk;
828 mk = fscrypt_find_master_key(sb, &mk_spec);
829 if (!mk) {
833 down_read(&mk->mk_sem);
834 mk_user = find_master_key_user(mk);
841 up_read(&mk->mk_sem);
842 fscrypt_put_master_key(mk);
868 static void evict_dentries_for_decrypted_inodes(struct fscrypt_master_key *mk)
874 spin_lock(&mk->mk_decrypted_inodes_lock);
876 list_for_each_entry(ci, &mk->mk_decrypted_inodes, ci_master_key_link) {
885 spin_unlock(&mk->mk_decrypted_inodes_lock);
891 spin_lock(&mk->mk_decrypted_inodes_lock);
894 spin_unlock(&mk->mk_decrypted_inodes_lock);
899 struct fscrypt_master_key *mk)
906 spin_lock(&mk->mk_decrypted_inodes_lock);
908 list_for_each(pos, &mk->mk_decrypted_inodes)
912 spin_unlock(&mk->mk_decrypted_inodes_lock);
919 list_first_entry(&mk->mk_decrypted_inodes,
924 spin_unlock(&mk->mk_decrypted_inodes_lock);
932 sb->s_id, busy_count, master_key_spec_type(&mk->mk_spec),
933 master_key_spec_len(&mk->mk_spec), (u8 *)&mk->mk_spec.u,
939 struct fscrypt_master_key *mk)
964 evict_dentries_for_decrypted_inodes(mk);
973 err2 = check_for_busy_inodes(sb, mk);
1004 struct fscrypt_master_key *mk;
1027 mk = fscrypt_find_master_key(sb, &arg.key_spec);
1028 if (!mk)
1030 down_write(&mk->mk_sem);
1033 if (mk->mk_users && mk->mk_users->keys.nr_leaves_on_tree != 0) {
1035 err = keyring_clear(mk->mk_users);
1037 err = remove_master_key_user(mk);
1039 up_write(&mk->mk_sem);
1042 if (mk->mk_users->keys.nr_leaves_on_tree != 0) {
1051 up_write(&mk->mk_sem);
1058 if (is_master_key_secret_present(&mk->mk_secret)) {
1059 wipe_master_key_secret(&mk->mk_secret);
1060 fscrypt_put_master_key_activeref(sb, mk);
1063 inodes_remain = refcount_read(&mk->mk_active_refs) > 0;
1064 up_write(&mk->mk_sem);
1068 err = try_to_lock_encrypted_files(sb, mk);
1082 fscrypt_put_master_key(mk);
1129 struct fscrypt_master_key *mk;
1145 mk = fscrypt_find_master_key(sb, &arg.key_spec);
1146 if (!mk) {
1151 down_read(&mk->mk_sem);
1153 if (!is_master_key_secret_present(&mk->mk_secret)) {
1154 arg.status = refcount_read(&mk->mk_active_refs) > 0 ?
1162 if (mk->mk_users) {
1165 arg.user_count = mk->mk_users->keys.nr_leaves_on_tree;
1166 mk_user = find_master_key_user(mk);
1178 up_read(&mk->mk_sem);
1179 fscrypt_put_master_key(mk);