lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <20250612175515.3251-1-spasswolf@web.de>
Date: Thu, 12 Jun 2025 19:55:13 +0200
From: Bert Karwatzki <spasswolf@....de>
To: Joel Granados <joel.granados@...nel.org>
Cc: Bert Karwatzki <spasswolf@....de>,
	linux-kernel@...r.kernel.org,
	linux-next@...r.kernel.org,
	Waiman Long <longman@...hat.com>,
	Kees Cook <kees@...nel.org>
Subject: register_syctl_init error in linux-next-20250612

When starting evolution (gnome email client) on my debian sid with
linux-next-20250612 I get the following error message on the terminal
emulator (the Gtk messages also occur  when):

Gtk-Message: 13:34:49.069: Failed to load module "colorreload-gtk-module"
Gtk-Message: 13:34:49.070: Failed to load module "window-decorations-gtk-module"
Gtk-Message: 13:34:51.012: Failed to load module "colorreload-gtk-module"
Gtk-Message: 13:34:51.013: Failed to load module "window-decorations-gtk-module"
bwrap: Can't read /proc/sys/kernel/overflowuid: No such file or directory

** (org.gnome.Evolution:3327): ERROR **: 13:34:51.245: Failed to fully launch dbus-proxy: Der Kindprozess wurde mit Status 1 beendet
Trace/Breakpoint ausgelöst

and the following message in dmesg:

[  305.600587] [      T3327] traps: evolution[3327] trap int3 ip:7f64442d3ab7 sp:7ffc9f4e94d0 error:0 in libglib-2.0.so.0.8400.2[66ab7,7f644428c000+a1000]

I bisected this to commit cf47285025e6 ("locking/rtmutex: Move max_lock_depth
into rtmutex.c"). The absence of /proc/sys/kernel/overflow{uid,gid} seems to be the related
to the start failure, in affected kernel version the files are absent while they're present
when evolution starts normally.

Also when booting next-20250612 I get this error message regarding max_lock_depth and
rtmutex_sysctl_table:

[    0.234399] [         T1] sysctl duplicate entry: /kernel/max_lock_depth
[    0.234402] [         T1] failed when register_sysctl_sz rtmutex_sysctl_table to kernel
[    0.234405] [         T1] sysctl duplicate entry: /kernel/max_lock_depth
[    0.234407] [         T1] failed when register_sysctl_sz rtmutex_sysctl_table to kernel

Reverting commit cf47285025e6 in next-20250612 fixes the both the "sysctl duplicate
entry" issue and the missing overflow{gid,uid} files and evolution starts normally again.

As there were conflicts when reverting, here the revert patch for next-20250612
to illustrate conflict resolution:

diff --git a/include/linux/rtmutex.h b/include/linux/rtmutex.h
index dc9a51cda97c..7d049883a08a 100644
--- a/include/linux/rtmutex.h
+++ b/include/linux/rtmutex.h
@@ -18,6 +18,8 @@
 #include <linux/rbtree_types.h>
 #include <linux/spinlock_types_raw.h>
 
+extern int max_lock_depth; /* for sysctl */
+
 struct rt_mutex_base {
 	raw_spinlock_t		wait_lock;
 	struct rb_root_cached   waiters;
diff --git a/kernel/locking/rtmutex.c b/kernel/locking/rtmutex.c
index 705a0e0fd72a..c80902eacd79 100644
--- a/kernel/locking/rtmutex.c
+++ b/kernel/locking/rtmutex.c
@@ -29,29 +29,6 @@
 #include "rtmutex_common.h"
 #include "lock_events.h"
 
-/*
- * Max number of times we'll walk the boosting chain:
- */
-static int max_lock_depth = 1024;
-
-static const struct ctl_table rtmutex_sysctl_table[] = {
-	{
-		.procname	= "max_lock_depth",
-		.data		= &max_lock_depth,
-		.maxlen		= sizeof(int),
-		.mode		= 0644,
-		.proc_handler	= proc_dointvec,
-	},
-};
-
-static int __init init_rtmutex_sysctl(void)
-{
-	register_sysctl_init("kernel", rtmutex_sysctl_table);
-	return 0;
-}
-
-subsys_initcall(init_rtmutex_sysctl);
-
 #ifndef WW_RT
 # define build_ww_mutex()	(false)
 # define ww_container_of(rtm)	NULL
diff --git a/kernel/locking/rtmutex_api.c b/kernel/locking/rtmutex_api.c
index 9e00ea0e5cfa..2d933528a0fa 100644
--- a/kernel/locking/rtmutex_api.c
+++ b/kernel/locking/rtmutex_api.c
@@ -8,6 +8,11 @@
 #define RT_MUTEX_BUILD_MUTEX
 #include "rtmutex.c"
 
+/*
+ * Max number of times we'll walk the boosting chain:
+ */
+int max_lock_depth = 1024;
+
 /*
  * Debug aware fast / slowpath lock,trylock,unlock
  *
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 0716c7df7243..82af6e6f5dbb 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -23,6 +23,14 @@
 #include <linux/uaccess.h>
 #include <asm/processor.h>
 
+#ifdef CONFIG_X86
+#include <asm/nmi.h>
+#include <asm/io.h>
+#endif
+#ifdef CONFIG_RT_MUTEXES
+#include <linux/rtmutex.h>
+#endif
+
 /* shared constants to be used in various sysctls */
 const int sysctl_vals[] = { 0, 1, 2, 3, 4, 100, 200, 1000, 3000, INT_MAX, 65535, -1 };
 EXPORT_SYMBOL(sysctl_vals);
@@ -1525,6 +1533,15 @@ static const struct ctl_table kern_table[] = {
 		.proc_handler	= proc_dointvec,
 	},
 #endif
+#ifdef CONFIG_RT_MUTEXES
+	{
+		.procname	= "max_lock_depth",
+		.data		= &max_lock_depth,
+		.maxlen		= sizeof(int),
+		.mode		= 0644,
+		.proc_handler	= proc_dointvec,
+	},
+#endif
 };
 
 int __init sysctl_init_bases(void)


Bert Karwatzki

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ