make sysctl constants read-only

Most of this is extracted from the last publicly available version of
the PaX patches where it's part of KERNEXEC as __read_only. It has been
extended to a few more of these constants.
This commit is contained in:
Daniel Micay 2021-07-17 15:37:00 +00:00 committed by Kreciorek
parent a96370e583
commit 1f63f26cd2

View file

@ -119,27 +119,27 @@ EXPORT_SYMBOL(deny_new_usb);
/* Constants used for minimum and maximum */
#ifdef CONFIG_LOCKUP_DETECTOR
static int sixty = 60;
static int sixty __read_only = 60;
#endif
static unsigned long zero_ul;
static unsigned long one_ul = 1;
static unsigned long long_max = LONG_MAX;
static unsigned long __read_only zero_ul;
static unsigned long __read_only one_ul = 1;
static unsigned long __read_only long_max = LONG_MAX;
#ifdef CONFIG_PRINTK
static int ten_thousand = 10000;
static int ten_thousand __read_only = 10000;
#endif
#ifdef CONFIG_PERF_EVENTS
static int six_hundred_forty_kb = 640 * 1024;
static int six_hundred_forty_kb __read_only = 640 * 1024;
#endif
/* this is needed for the proc_doulongvec_minmax of vm_dirty_bytes */
static unsigned long dirty_bytes_min = 2 * PAGE_SIZE;
static unsigned long dirty_bytes_min __read_only = 2 * PAGE_SIZE;
/* this is needed for the proc_dointvec_minmax for [fs_]overflow UID and GID */
static int maxolduid = 65535;
static int minolduid;
static int maxolduid __read_only = 65535;
static int minolduid __read_only;
static int ngroups_max = NGROUPS_MAX;
static int ngroups_max __read_only = NGROUPS_MAX;
static const int cap_last_cap = CAP_LAST_CAP;
/*
@ -147,7 +147,7 @@ static const int cap_last_cap = CAP_LAST_CAP;
* and hung_task_check_interval_secs
*/
#ifdef CONFIG_DETECT_HUNG_TASK
static unsigned long hung_task_timeout_max = (LONG_MAX/HZ);
static unsigned long hung_task_timeout_max __read_only = (LONG_MAX/HZ);
#endif
#ifdef CONFIG_INOTIFY_USER
@ -193,19 +193,19 @@ int sysctl_legacy_va_layout;
#endif
#ifdef CONFIG_SCHED_DEBUG
static int min_sched_granularity_ns = 100000; /* 100 usecs */
static int max_sched_granularity_ns = NSEC_PER_SEC; /* 1 second */
static int min_wakeup_granularity_ns; /* 0 usecs */
static int max_wakeup_granularity_ns = NSEC_PER_SEC; /* 1 second */
static int min_sched_granularity_ns __read_only = 100000; /* 100 usecs */
static int max_sched_granularity_ns __read_only = NSEC_PER_SEC; /* 1 second */
static int min_wakeup_granularity_ns __read_only; /* 0 usecs */
static int max_wakeup_granularity_ns __read_only = NSEC_PER_SEC; /* 1 second */
#ifdef CONFIG_SMP
static int min_sched_tunable_scaling = SCHED_TUNABLESCALING_NONE;
static int max_sched_tunable_scaling = SCHED_TUNABLESCALING_END-1;
static int min_sched_tunable_scaling __read_only = SCHED_TUNABLESCALING_NONE;
static int max_sched_tunable_scaling __read_only = SCHED_TUNABLESCALING_END-1;
#endif /* CONFIG_SMP */
#endif /* CONFIG_SCHED_DEBUG */
#ifdef CONFIG_COMPACTION
static int min_extfrag_threshold;
static int max_extfrag_threshold = 1000;
static int min_extfrag_threshold __read_only;
static int max_extfrag_threshold __read_only = 1000;
#endif
#endif /* CONFIG_SYSCTL */