.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-or-later |
---|
1 | 2 | /* General persistent per-UID keyrings register |
---|
2 | 3 | * |
---|
3 | 4 | * Copyright (C) 2013 Red Hat, Inc. All Rights Reserved. |
---|
4 | 5 | * Written by David Howells (dhowells@redhat.com) |
---|
5 | | - * |
---|
6 | | - * This program is free software; you can redistribute it and/or |
---|
7 | | - * modify it under the terms of the GNU General Public Licence |
---|
8 | | - * as published by the Free Software Foundation; either version |
---|
9 | | - * 2 of the Licence, or (at your option) any later version. |
---|
10 | 6 | */ |
---|
11 | 7 | |
---|
12 | 8 | #include <linux/user_namespace.h> |
---|
.. | .. |
---|
84 | 80 | long ret; |
---|
85 | 81 | |
---|
86 | 82 | /* Look in the register if it exists */ |
---|
| 83 | + memset(&index_key, 0, sizeof(index_key)); |
---|
87 | 84 | index_key.type = &key_type_keyring; |
---|
88 | 85 | index_key.description = buf; |
---|
89 | 86 | index_key.desc_len = sprintf(buf, "_persistent.%u", from_kuid(ns, uid)); |
---|
| 87 | + key_set_index_key(&index_key); |
---|
90 | 88 | |
---|
91 | 89 | if (ns->persistent_keyring_register) { |
---|
92 | 90 | reg_ref = make_key_ref(ns->persistent_keyring_register, true); |
---|
93 | | - down_read(&ns->persistent_keyring_register_sem); |
---|
| 91 | + down_read(&ns->keyring_sem); |
---|
94 | 92 | persistent_ref = find_key_to_update(reg_ref, &index_key); |
---|
95 | | - up_read(&ns->persistent_keyring_register_sem); |
---|
| 93 | + up_read(&ns->keyring_sem); |
---|
96 | 94 | |
---|
97 | 95 | if (persistent_ref) |
---|
98 | 96 | goto found; |
---|
.. | .. |
---|
101 | 99 | /* It wasn't in the register, so we'll need to create it. We might |
---|
102 | 100 | * also need to create the register. |
---|
103 | 101 | */ |
---|
104 | | - down_write(&ns->persistent_keyring_register_sem); |
---|
| 102 | + down_write(&ns->keyring_sem); |
---|
105 | 103 | persistent_ref = key_create_persistent(ns, uid, &index_key); |
---|
106 | | - up_write(&ns->persistent_keyring_register_sem); |
---|
| 104 | + up_write(&ns->keyring_sem); |
---|
107 | 105 | if (!IS_ERR(persistent_ref)) |
---|
108 | 106 | goto found; |
---|
109 | 107 | |
---|