xref: /linux/drivers/nvme/common/keyring.c (revision 9d77eb52778499a97cab662aa96de4e2e4fa72d3)
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Copyright (c) 2023 Hannes Reinecke, SUSE Labs
4  */
5 
6 #include <linux/module.h>
7 #include <linux/seq_file.h>
8 #include <linux/key-type.h>
9 #include <keys/user-type.h>
10 #include <linux/nvme.h>
11 
12 static struct key *nvme_keyring;
13 
14 key_serial_t nvme_keyring_id(void)
15 {
16 	return nvme_keyring->serial;
17 }
18 EXPORT_SYMBOL_GPL(nvme_keyring_id);
19 
20 int nvme_keyring_init(void)
21 {
22 	nvme_keyring = keyring_alloc(".nvme",
23 				     GLOBAL_ROOT_UID, GLOBAL_ROOT_GID,
24 				     current_cred(),
25 				     (KEY_POS_ALL & ~KEY_POS_SETATTR) |
26 				     (KEY_USR_ALL & ~KEY_USR_SETATTR),
27 				     KEY_ALLOC_NOT_IN_QUOTA, NULL, NULL);
28 	if (IS_ERR(nvme_keyring))
29 		return PTR_ERR(nvme_keyring);
30 
31 	return 0;
32 }
33 EXPORT_SYMBOL_GPL(nvme_keyring_init);
34 
35 void nvme_keyring_exit(void)
36 {
37 	key_revoke(nvme_keyring);
38 	key_put(nvme_keyring);
39 }
40 EXPORT_SYMBOL_GPL(nvme_keyring_exit);
41