From 7aaf8034fc42a987aa7c9e4d1382ac9885bacf52 Mon Sep 17 00:00:00 2001 From: Ondrej Holy Date: Jul 14 2023 11:48:15 +0000 Subject: Fix udisks2 volume monitor crashes Resolves: rhbz#2219172 --- diff --git a/gvfs.spec b/gvfs.spec index d010cf6..0ee10db 100644 --- a/gvfs.spec +++ b/gvfs.spec @@ -22,13 +22,16 @@ Name: gvfs Version: 1.51.1 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Backends for the gio framework in GLib License: GPLv3 and LGPLv2+ and BSD and MPLv2.0 URL: https://wiki.gnome.org/Projects/gvfs Source0: https://download.gnome.org/sources/gvfs/1.51/gvfs-%{version}.tar.xz +# https://bugzilla.redhat.com/show_bug.cgi?id=2219172 +Patch0: udisks2-Disconnect-signal-handlers-before-freeing-da.patch + BuildRequires: meson BuildRequires: gcc BuildRequires: pkgconfig(glib-2.0) >= %{glib2_version} @@ -428,6 +431,9 @@ killall -USR1 gvfsd >&/dev/null || : %{_datadir}/installed-tests %changelog +* Fri Jul 14 2023 Ondrej Holy - 1.51.1-2 +- Fix udisks2 volume monitor crashes (#2219172) + * Fri Jun 30 2023 Kalev Lember - 1.51.1-1 - Update to 1.51.1 diff --git a/udisks2-Disconnect-signal-handlers-before-freeing-da.patch b/udisks2-Disconnect-signal-handlers-before-freeing-da.patch new file mode 100644 index 0000000..80b1209 --- /dev/null +++ b/udisks2-Disconnect-signal-handlers-before-freeing-da.patch @@ -0,0 +1,30 @@ +From 70d5ff3c52820840344df1a3e3b83a07dfb8e672 Mon Sep 17 00:00:00 2001 +From: Ondrej Holy +Date: Thu, 13 Jul 2023 10:15:03 +0200 +Subject: [PATCH] udisks2: Disconnect signal handlers before freeing data + +After the commit 1b80450a, the udisks2 volume monitor crashes sometimes after +showing the unmount notification. This is because the `UnmountNotifyData` +struct is freed, but signal handlers are still connected. Let's disconnect +the signal handlers to avoid those crashes caused by invalid reads. + +Related: https://bugzilla.redhat.com/show_bug.cgi?id=2219172 +--- + monitor/udisks2/gvfsudisks2utils.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/monitor/udisks2/gvfsudisks2utils.c b/monitor/udisks2/gvfsudisks2utils.c +index 1f48ceb0..345c93ab 100644 +--- a/monitor/udisks2/gvfsudisks2utils.c ++++ b/monitor/udisks2/gvfsudisks2utils.c +@@ -709,6 +709,7 @@ unmount_notify_data_free (gpointer user_data) + UnmountNotifyData *data = user_data; + + unmount_notify_stop_timer (data); ++ g_signal_handlers_disconnect_by_data (data->op, data); + + g_clear_object (&data->mount); + g_clear_object (&data->drive); +-- +2.41.0 +