1 // SPDX-License-Identifier: GPL-2.0-or-later 2 /* Key management controls 3 * 4 * Copyright (C) 2008 Red Hat, Inc. All Rights Reserved. 5 * Written by David Howells (dhowells@redhat.com) 6 */ 7 8 #include <linux/key.h> 9 #include <linux/sysctl.h> 10 #include "internal.h" 11 12 static struct ctl_table key_sysctls[] = { 13 { 14 .procname = "maxkeys", 15 .data = &key_quota_maxkeys, 16 .maxlen = sizeof(unsigned), 17 .mode = 0644, 18 .proc_handler = proc_dointvec_minmax, 19 .extra1 = (void *) SYSCTL_ONE, 20 .extra2 = (void *) SYSCTL_INT_MAX, 21 }, 22 { 23 .procname = "maxbytes", 24 .data = &key_quota_maxbytes, 25 .maxlen = sizeof(unsigned), 26 .mode = 0644, 27 .proc_handler = proc_dointvec_minmax, 28 .extra1 = (void *) SYSCTL_ONE, 29 .extra2 = (void *) SYSCTL_INT_MAX, 30 }, 31 { 32 .procname = "root_maxkeys", 33 .data = &key_quota_root_maxkeys, 34 .maxlen = sizeof(unsigned), 35 .mode = 0644, 36 .proc_handler = proc_dointvec_minmax, 37 .extra1 = (void *) SYSCTL_ONE, 38 .extra2 = (void *) SYSCTL_INT_MAX, 39 }, 40 { 41 .procname = "root_maxbytes", 42 .data = &key_quota_root_maxbytes, 43 .maxlen = sizeof(unsigned), 44 .mode = 0644, 45 .proc_handler = proc_dointvec_minmax, 46 .extra1 = (void *) SYSCTL_ONE, 47 .extra2 = (void *) SYSCTL_INT_MAX, 48 }, 49 { 50 .procname = "gc_delay", 51 .data = &key_gc_delay, 52 .maxlen = sizeof(unsigned), 53 .mode = 0644, 54 .proc_handler = proc_dointvec_minmax, 55 .extra1 = (void *) SYSCTL_ZERO, 56 .extra2 = (void *) SYSCTL_INT_MAX, 57 }, 58 #ifdef CONFIG_PERSISTENT_KEYRINGS 59 { 60 .procname = "persistent_keyring_expiry", 61 .data = &persistent_keyring_expiry, 62 .maxlen = sizeof(unsigned), 63 .mode = 0644, 64 .proc_handler = proc_dointvec_minmax, 65 .extra1 = (void *) SYSCTL_ZERO, 66 .extra2 = (void *) SYSCTL_INT_MAX, 67 }, 68 #endif 69 }; 70 71 static int __init init_security_keys_sysctls(void) 72 { 73 register_sysctl_init("kernel/keys", key_sysctls); 74 return 0; 75 } 76 early_initcall(init_security_keys_sysctls); 77