diff --git a/0001-smartcard-Cancel-cancellable-when-stopping.patch b/0001-smartcard-Cancel-cancellable-when-stopping.patch new file mode 100644 index 0000000..2c317ed --- /dev/null +++ b/0001-smartcard-Cancel-cancellable-when-stopping.patch @@ -0,0 +1,48 @@ +From a1c2685bc6b255f22b6ce4645c001d428cb67907 Mon Sep 17 00:00:00 2001 +From: Marek Kasik +Date: Wed, 22 May 2019 14:56:42 +0200 +Subject: [PATCH] smartcard: Cancel cancellable when stopping + +self->cancellable in GsdSmartcardManager is not cancelled +at gsd_smartcard_manager_stop() and hence some callbacks are +still called after unload_nss() which clears SECMODListLock +which is used by SECMOD_GetReadLock() / SECMOD_ReleaseReadLock(). + +This leads to crashes in NSSRWLock_LockRead_Util() and +NSSRWLock_UnlockRead_Util() probably. + +Also check for return value of g_cancellable_connect(). + +See https://bugzilla.redhat.com/show_bug.cgi?id=1646359, +https://bugzilla.redhat.com/show_bug.cgi?id=1688791 and +their duplicates for additional info. +--- + plugins/smartcard/gsd-smartcard-manager.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/plugins/smartcard/gsd-smartcard-manager.c b/plugins/smartcard/gsd-smartcard-manager.c +index 014c17be..da1e0d6d 100644 +--- a/plugins/smartcard/gsd-smartcard-manager.c ++++ b/plugins/smartcard/gsd-smartcard-manager.c +@@ -190,7 +190,8 @@ watch_one_event_from_driver (GsdSmartcardManager *self, + operation, + NULL); + +- card = SECMOD_WaitForAnyTokenEvent (operation->driver, 0, PR_SecondsToInterval (1)); ++ if (handler_id != 0) ++ card = SECMOD_WaitForAnyTokenEvent (operation->driver, 0, PR_SecondsToInterval (1)); + + g_cancellable_disconnect (cancellable, handler_id); + +@@ -773,6 +774,8 @@ gsd_smartcard_manager_stop (GsdSmartcardManager *self) + + g_debug ("Stopping smartcard manager"); + ++ g_cancellable_cancel (priv->cancellable); ++ + unload_nss (self); + + g_clear_object (&priv->settings); +-- +2.20.1 + diff --git a/gnome-settings-daemon.spec b/gnome-settings-daemon.spec index c81cf29..6806abb 100644 --- a/gnome-settings-daemon.spec +++ b/gnome-settings-daemon.spec @@ -8,7 +8,7 @@ Name: gnome-settings-daemon Version: 3.32.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: The daemon sharing settings from GNOME to GTK+/KDE applications License: GPLv2+ @@ -16,6 +16,8 @@ URL: https://download.gnome.org/sources/%{name} Source0: https://download.gnome.org/sources/%{name}/3.32/%{name}-%{version}.tar.xz Source1: org.gnome.settings-daemon.plugins.power.gschema.override +Patch0: 0001-smartcard-Cancel-cancellable-when-stopping.patch + BuildRequires: meson >= 0.44.0 BuildRequires: gcc BuildRequires: cups-devel @@ -195,6 +197,9 @@ mkdir $RPM_BUILD_ROOT%{_libdir}/gnome-settings-daemon-3.0/gtk-modules %{_libdir}/pkgconfig/gnome-settings-daemon.pc %changelog +* Tue May 28 2019 Marek Kasik - 3.32.0-2 +- Fix NSS crash at smartcard plugin (#1688791) + * Mon Mar 11 2019 Kalev Lember - 3.32.0-1 - Update to 3.32.0