[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <vvorpevngfle6budlgqhmj3f25lb77czzyvd5aa6jil7zkaqgp@weanygri324r>
Date: Thu, 19 Jun 2025 13:50:21 +0200
From: Joel Granados <joel.granados@...nel.org>
To: Bert Karwatzki <spasswolf@....de>
Cc: linux-kernel@...r.kernel.org, linux-next@...r.kernel.org,
Waiman Long <longman@...hat.com>, Kees Cook <kees@...nel.org>
Subject: Re: register_syctl_init error in linux-next-20250612
Hey Bert
Thx for the report.
I just tested on my https://git.kernel.org/pub/scm/linux/kernel/git/sysctl/sysctl.git/log/?h=sysctl-next
and can't see the issue. Maybe its something that I'm missing in the
configuration. Do you happen to have your the .config that you used?
On Thu, Jun 12, 2025 at 07:55:13PM +0200, Bert Karwatzki wrote:
> 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
that is weird. I made sure that we only call register once. Will test
this on next and see what I get
>
> 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.
I would like to fix this instead of reverting. Let me give it a go and
revert if there is no easy fix.
>
> As there were conflicts when reverting, here the revert patch for next-20250612
> to illustrate conflict resolution:
Thx for this.
>
> 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
--
Joel Granados
Download attachment "signature.asc" of type "application/pgp-signature" (660 bytes)
Powered by blists - more mailing lists