From 93d1d3e16c7007640a6e648dde3e4c7c145eea19 Mon Sep 17 00:00:00 2001 From: Felipe Borges Date: Tue, 29 Oct 2024 12:57:51 +0100 Subject: [PATCH] Fix smartcards only working when cold plugged Related: RHEL-47261 --- gnome-settings-daemon.spec | 7 ++++++- smartcard-hotplug.patch | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 smartcard-hotplug.patch diff --git a/gnome-settings-daemon.spec b/gnome-settings-daemon.spec index 2a320ad..2ac165d 100644 --- a/gnome-settings-daemon.spec +++ b/gnome-settings-daemon.spec @@ -11,7 +11,7 @@ Name: gnome-settings-daemon Version: 40.0.1 -Release: 17%{?dist} +Release: 18%{?dist} Summary: The daemon sharing settings from GNOME to GTK+/KDE applications License: GPLv2+ @@ -73,6 +73,7 @@ Patch00003: im-module-setting-fix.patch Patch00004: print-notifications-clear-in-stop.patch Patch00005: 0001-power-Respect-the-nothing-power-button-action-for-VM.patch Patch00006: usb-protection-dont-crash-when-screensaver-service-unavailable.patch +Patch00007: smartcard-hotplug.patch %description A daemon to share settings from GNOME to other applications. It also @@ -198,6 +199,10 @@ cp %{SOURCE1} $RPM_BUILD_ROOT%{_datadir}/glib-2.0/schemas %{_libdir}/pkgconfig/gnome-settings-daemon.pc %changelog +* Tue Oct 29 2024 Felipe Borges - 40.0.1-18 +- Fix smartcards only working when cold-plugged + Related: RHEL-47261 + * Mon Mar 25 2024 Felipe Borges - 40.0.1-17 - Fix usb-protection crash when when screensaver service is unavailable Related: RHEL-19295 diff --git a/smartcard-hotplug.patch b/smartcard-hotplug.patch new file mode 100644 index 0000000..1456942 --- /dev/null +++ b/smartcard-hotplug.patch @@ -0,0 +1,36 @@ +From e5b52d51d301bf19efc4211f2fa9f256f64a2a29 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?David=20H=C3=A4rdeman?= +Date: Wed, 12 Apr 2023 22:23:51 +0200 +Subject: [PATCH] smartcard: check for the addition of new smartcard readers + +gsd-smartcard currently checks for the insertion/removal of smartcards +in reader devices which where present at the time gsd-smartcard was +started, but does not account for new smartcard readers appearing +after gsd-smartcard was started. + +This patch adds support for checking for the addition of new slots +(i.e. smartcard readers), which is necessary to support devices +like the Yubikey (a "reader" and a smartcard) which may be inserted +after gsd-smartcard was started. +--- + plugins/smartcard/gsd-smartcard-manager.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/plugins/smartcard/gsd-smartcard-manager.c b/plugins/smartcard/gsd-smartcard-manager.c +index acd22df819..a219e22ef7 100644 +--- a/plugins/smartcard/gsd-smartcard-manager.c ++++ b/plugins/smartcard/gsd-smartcard-manager.c +@@ -212,7 +212,12 @@ watch_one_event_from_driver (GsdSmartcardManager *self, + error_code = PORT_GetError (); + + if (error_code == SEC_ERROR_NO_EVENT) { +- g_usleep (1 * G_USEC_PER_SEC); ++ int old_slot_count = operation->driver->slotCount; ++ SECMOD_UpdateSlotList (operation->driver); ++ if (operation->driver->slotCount != old_slot_count) ++ g_debug ("Slot count change %i -> %i", old_slot_count, operation->driver->slotCount); ++ else ++ g_usleep (1 * G_USEC_PER_SEC); + + return TRUE; + }