From 1b60dd9a9ef5e6324504c5802205179407bfaa9f Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Tue, 2 Apr 2024 21:59:05 +0200 Subject: [PATCH 1/4] manager: fix assertion failure during shutdown Fix the following: NetworkManager: file ../src/libnm-core-impl/nm-connection.c: line 321 (nm_connection_get_setting): should not be reached NetworkManager.service: Main process exited, code=dumped, status=5/TRAP Fixes: bd38a1983251 ('connection: add support to down-on-poweroff') --- src/core/nm-manager.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/nm-manager.c b/src/core/nm-manager.c index c30a2ff632..198b7e14c4 100644 --- a/src/core/nm-manager.c +++ b/src/core/nm-manager.c @@ -7488,7 +7488,7 @@ shutdown_cb(NMPowerMonitor *monitor, gpointer user_data) NMSettingConnection *s_con; gboolean take_down = FALSE; - s_con = nm_device_get_applied_setting(device, NM_META_SETTING_TYPE_CONNECTION); + s_con = nm_device_get_applied_setting(device, NM_TYPE_SETTING_CONNECTION); if (!s_con) continue; From 61e520ca4b32c1c7e3f5bfa3852a01b37921b5a8 Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Tue, 2 Apr 2024 22:03:22 +0200 Subject: [PATCH 2/4] power-monitor: fix shutdown callback signature The D-Bus signal is "PrepareForShutdown(b start)"; therefore, the callback needs a boolean argument. --- src/core/nm-power-monitor.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/nm-power-monitor.c b/src/core/nm-power-monitor.c index ac1430f018..c25f9b9c48 100644 --- a/src/core/nm-power-monitor.c +++ b/src/core/nm-power-monitor.c @@ -170,7 +170,7 @@ prepare_for_sleep_cb(GDBusProxy *proxy, gboolean is_about_to_suspend, gpointer d } static void -prepare_for_shutdown_cb(GDBusProxy *proxy, gpointer data) +prepare_for_shutdown_cb(GDBusProxy *proxy, gboolean is_about_to_shutdown, gpointer data) { shutdown_signal(data); } From 3f24b99e8620aed79903f8604ed0dcacae11775b Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Tue, 2 Apr 2024 22:08:12 +0200 Subject: [PATCH 3/4] power-monitor: simplify signal handling Remove intermediate functions that only change the arguments order. --- src/core/nm-power-monitor.c | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/src/core/nm-power-monitor.c b/src/core/nm-power-monitor.c index c25f9b9c48..a9a70c39eb 100644 --- a/src/core/nm-power-monitor.c +++ b/src/core/nm-power-monitor.c @@ -83,12 +83,6 @@ G_DEFINE_TYPE(NMPowerMonitor, nm_power_monitor, G_TYPE_OBJECT); /*****************************************************************************/ -static void sleep_signal(NMPowerMonitor *self, gboolean is_about_to_suspend); - -static void shutdown_signal(NMPowerMonitor *self); - -/*****************************************************************************/ - static void drop_inhibitor(NMPowerMonitor *self, gboolean force) { @@ -163,18 +157,6 @@ take_inhibitor(NMPowerMonitor *self) self); } -static void -prepare_for_sleep_cb(GDBusProxy *proxy, gboolean is_about_to_suspend, gpointer data) -{ - sleep_signal(data, is_about_to_suspend); -} - -static void -prepare_for_shutdown_cb(GDBusProxy *proxy, gboolean is_about_to_shutdown, gpointer data) -{ - shutdown_signal(data); -} - static void name_owner_cb(GObject *object, GParamSpec *pspec, gpointer user_data) { @@ -193,7 +175,7 @@ name_owner_cb(GObject *object, GParamSpec *pspec, gpointer user_data) } static void -sleep_signal(NMPowerMonitor *self, gboolean is_about_to_suspend) +prepare_for_sleep_cb(GDBusProxy *proxy, gboolean is_about_to_suspend, NMPowerMonitor *self) { g_return_if_fail(NM_IS_POWER_MONITOR(self)); @@ -209,7 +191,7 @@ sleep_signal(NMPowerMonitor *self, gboolean is_about_to_suspend) } static void -shutdown_signal(NMPowerMonitor *self) +prepare_for_shutdown_cb(GDBusProxy *proxy, gboolean is_about_to_shutdown, NMPowerMonitor *self) { g_return_if_fail(NM_IS_POWER_MONITOR(self)); From 044620f8adcb598abd9beb04776af82627316e6d Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Tue, 2 Apr 2024 22:09:28 +0200 Subject: [PATCH 4/4] power-monitor: fix "shutdown" signal definition NMPowerMonitor emits the "shutdown" signal without arguments; fix the definition of the signal. Fixes: bd38a1983251 ('connection: add support to down-on-poweroff') --- src/core/nm-power-monitor.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/core/nm-power-monitor.c b/src/core/nm-power-monitor.c index a9a70c39eb..289b0ff001 100644 --- a/src/core/nm-power-monitor.c +++ b/src/core/nm-power-monitor.c @@ -354,8 +354,7 @@ nm_power_monitor_class_init(NMPowerMonitorClass *klass) 0, NULL, NULL, - g_cclosure_marshal_VOID__BOOLEAN, + NULL, G_TYPE_NONE, - 1, - G_TYPE_BOOLEAN); + 0); }