Fix udisks2 volume monitor crashes

Resolves: rhbz#2219172
This commit is contained in:
Ondrej Holy 2023-07-14 13:48:15 +02:00
parent 72c3e3852d
commit 7aaf8034fc
2 changed files with 37 additions and 1 deletions

View File

@ -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 <oholy@redhat.com> - 1.51.1-2
- Fix udisks2 volume monitor crashes (#2219172)
* Fri Jun 30 2023 Kalev Lember <klember@redhat.com> - 1.51.1-1
- Update to 1.51.1

View File

@ -0,0 +1,30 @@
From 70d5ff3c52820840344df1a3e3b83a07dfb8e672 Mon Sep 17 00:00:00 2001
From: Ondrej Holy <oholy@redhat.com>
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