.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-or-later |
---|
1 | 2 | /* procfs files for key database enumeration |
---|
2 | 3 | * |
---|
3 | 4 | * Copyright (C) 2004 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 License |
---|
8 | | - * as published by the Free Software Foundation; either version |
---|
9 | | - * 2 of the License, or (at your option) any later version. |
---|
10 | 6 | */ |
---|
11 | 7 | |
---|
12 | | -#include <linux/module.h> |
---|
13 | 8 | #include <linux/init.h> |
---|
14 | 9 | #include <linux/sched.h> |
---|
15 | 10 | #include <linux/fs.h> |
---|
.. | .. |
---|
173 | 168 | .match_data.cmp = lookup_user_key_possessed, |
---|
174 | 169 | .match_data.raw_data = key, |
---|
175 | 170 | .match_data.lookup_type = KEYRING_SEARCH_LOOKUP_DIRECT, |
---|
176 | | - .flags = KEYRING_SEARCH_NO_STATE_CHECK, |
---|
| 171 | + .flags = (KEYRING_SEARCH_NO_STATE_CHECK | |
---|
| 172 | + KEYRING_SEARCH_RECURSE), |
---|
177 | 173 | }; |
---|
178 | 174 | |
---|
179 | 175 | key_ref = make_key_ref(key, 0); |
---|
.. | .. |
---|
182 | 178 | * skip if the key does not indicate the possessor can view it |
---|
183 | 179 | */ |
---|
184 | 180 | if (key->perm & KEY_POS_VIEW) { |
---|
185 | | - skey_ref = search_my_process_keyrings(&ctx); |
---|
| 181 | + rcu_read_lock(); |
---|
| 182 | + skey_ref = search_cred_keyrings_rcu(&ctx); |
---|
| 183 | + rcu_read_unlock(); |
---|
186 | 184 | if (!IS_ERR(skey_ref)) { |
---|
187 | 185 | key_ref_put(skey_ref); |
---|
188 | 186 | key_ref = make_key_ref(key, 1); |
---|