From: Greg Kroah-Hartman Date: Thu, 30 Nov 2023 14:28:04 +0000 (+0000) Subject: 5.15-stable patches X-Git-Tag: v5.15.141~23 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e71c2ee41428f24d79a5f157252853af538048aa;p=thirdparty%2Fkernel%2Fstable-queue.git 5.15-stable patches added patches: proc-sysctl-prevent-aliased-sysctls-from-getting-passed-to-init.patch --- diff --git a/queue-5.15/proc-sysctl-prevent-aliased-sysctls-from-getting-passed-to-init.patch b/queue-5.15/proc-sysctl-prevent-aliased-sysctls-from-getting-passed-to-init.patch new file mode 100644 index 00000000000..40c86673975 --- /dev/null +++ b/queue-5.15/proc-sysctl-prevent-aliased-sysctls-from-getting-passed-to-init.patch @@ -0,0 +1,80 @@ +From 8001f49394e353f035306a45bcf504f06fca6355 Mon Sep 17 00:00:00 2001 +From: Krister Johansen +Date: Fri, 27 Oct 2023 14:46:40 -0700 +Subject: proc: sysctl: prevent aliased sysctls from getting passed to init + +From: Krister Johansen + +commit 8001f49394e353f035306a45bcf504f06fca6355 upstream. + +The code that checks for unknown boot options is unaware of the sysctl +alias facility, which maps bootparams to sysctl values. If a user sets +an old value that has a valid alias, a message about an invalid +parameter will be printed during boot, and the parameter will get passed +to init. Fix by checking for the existence of aliased parameters in the +unknown boot parameter code. If an alias exists, don't return an error +or pass the value to init. + +Signed-off-by: Krister Johansen +Cc: stable@vger.kernel.org +Fixes: 0a477e1ae21b ("kernel/sysctl: support handling command line aliases") +Signed-off-by: Luis Chamberlain +Signed-off-by: Krister Johansen +Signed-off-by: Greg Kroah-Hartman +--- + fs/proc/proc_sysctl.c | 7 +++++++ + include/linux/sysctl.h | 6 ++++++ + init/main.c | 4 ++++ + 3 files changed, 17 insertions(+) + +--- a/fs/proc/proc_sysctl.c ++++ b/fs/proc/proc_sysctl.c +@@ -1780,6 +1780,13 @@ static const char *sysctl_find_alias(cha + return NULL; + } + ++bool sysctl_is_alias(char *param) ++{ ++ const char *alias = sysctl_find_alias(param); ++ ++ return alias != NULL; ++} ++ + /* Set sysctl value passed on kernel command line. */ + static int process_sysctl_arg(char *param, char *val, + const char *unused, void *arg) +--- a/include/linux/sysctl.h ++++ b/include/linux/sysctl.h +@@ -210,6 +210,7 @@ extern void __register_sysctl_init(const + const char *table_name); + #define register_sysctl_init(path, table) __register_sysctl_init(path, table, #table) + void do_sysctl_args(void); ++bool sysctl_is_alias(char *param); + + extern int pwrsw_enabled; + extern int unaligned_enabled; +@@ -251,6 +252,11 @@ static inline void setup_sysctl_set(stru + static inline void do_sysctl_args(void) + { + } ++ ++static inline bool sysctl_is_alias(char *param) ++{ ++ return false; ++} + #endif /* CONFIG_SYSCTL */ + + int sysctl_max_threads(struct ctl_table *table, int write, void *buffer, +--- a/init/main.c ++++ b/init/main.c +@@ -540,6 +540,10 @@ static int __init unknown_bootoption(cha + { + size_t len = strlen(param); + ++ /* Handle params aliased to sysctls */ ++ if (sysctl_is_alias(param)) ++ return 0; ++ + repair_env_string(param, val); + + /* Handle obsolete-style parameters */ diff --git a/queue-5.15/series b/queue-5.15/series index b9a6b5a3ad5..ecffbf8b2af 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -40,3 +40,4 @@ ext4-using-nofail-preallocation-in-ext4_es_insert_ex.patch ext4-fix-slab-use-after-free-in-ext4_es_insert_exten.patch ext4-make-sure-allocate-pending-entry-not-fail.patch tracing-kprobes-return-eaddrnotavail-when-func-matches-several-symbols.patch +proc-sysctl-prevent-aliased-sysctls-from-getting-passed-to-init.patch