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