From 76c1b16e7a0818565c63815c05110276507c3600 Mon Sep 17 00:00:00 2001 From: liusirui Date: Thu, 20 Oct 2022 16:32:36 +0800 Subject: [PATCH] backport patch to fix data race --- ...c-Fix-data-race-for-AraKiri-variable.patch | 48 +++++++++++++++++++ pcsc-lite.spec | 7 ++- 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 0001-pcscdaemon.c-Fix-data-race-for-AraKiri-variable.patch diff --git a/0001-pcscdaemon.c-Fix-data-race-for-AraKiri-variable.patch b/0001-pcscdaemon.c-Fix-data-race-for-AraKiri-variable.patch new file mode 100644 index 0000000..c7477e9 --- /dev/null +++ b/0001-pcscdaemon.c-Fix-data-race-for-AraKiri-variable.patch @@ -0,0 +1,48 @@ +From e46aad0c3571bd5f9da4cd4544fa3d6201dc3890 Mon Sep 17 00:00:00 2001 +From: Ludovic Rousseau +Date: Sun, 12 Dec 2021 15:25:32 +0100 +Subject: [PATCH] pcscdaemon.c: Fix data race for AraKiri variable + +Issue reported by clang ThreadSanitizer + +WARNING: ThreadSanitizer: data race (pid=14419) + Read of size 1 at 0x000000f3a9c8 by main thread: + #0 SVCServiceRunLoop (pcscd+0x4c0da9) + #1 main (pcscd+0x4c0694) + + Previous write of size 1 at 0x000000f3a9c8 by thread T1: + #0 signal_thread (pcscd+0x4c0aca) + + As if synchronized via sleep: + #0 nanosleep (pcscd+0x4297dd) + #1 SYS_USleep (pcscd+0x4c6c36) + #2 SVCServiceRunLoop (pcscd+0x4c0cef) + #3 main (pcscd+0x4c0694) + + Location is global 'AraKiri' of size 1 at 0x000000f3a9c8 (pcscd+0x000000f3a9c8) + + Thread T1 (tid=14421, running) created by main thread at: + #0 pthread_create (pcscd+0x42be9b) + #1 main (pcscd+0x4c01c8) + +SUMMARY: ThreadSanitizer: data race (/home/rousseau/sc/costa/PCSC/src/pcscd+0x4c0da9) in SVCServiceRunLoop +--- + src/pcscdaemon.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/pcscdaemon.c b/src/pcscdaemon.c +index 2cc3fc0..2c4e305 100644 +--- a/src/pcscdaemon.c ++++ b/src/pcscdaemon.c +@@ -75,7 +75,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + #define FALSE 0 + #endif + +-char AraKiri = FALSE; ++_Atomic char AraKiri = FALSE; + static char Init = TRUE; + char AutoExit = FALSE; + char SocketActivated = FALSE; +-- +2.33.0 + diff --git a/pcsc-lite.spec b/pcsc-lite.spec index 15895e7..5bef2f5 100644 --- a/pcsc-lite.spec +++ b/pcsc-lite.spec @@ -1,11 +1,13 @@ Name: pcsc-lite Version: 1.9.4 -Release: 1 +Release: 2 Summary: Middleware to access a smart card using SCard API (PC/SC) License: BSD URL: https://pcsclite.apdu.fr/ Source0: https://pcsclite.apdu.fr/files/%{name}-%{version}.tar.bz2 +Patch0: 0001-pcscdaemon.c-Fix-data-race-for-AraKiri-variable.patch + BuildRequires: systemd-devel polkit-devel gettext-devel BuildRequires: perl-podlators doxygen gnupg2 gcc python3 @@ -110,6 +112,9 @@ mkdir -p %{buildroot}/%{_localstatedir}/run/pcscd %changelog +* Thu Oct 20 2022 liusirui - 1.9.4-2 +- backport patch to fix data race + * Tue Nov 23 2021 yanglongkang - 1.9.4-1 - update to 1.9.4