[<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