anolis-glibc/10001-glibc-fix-race-popen.patch
Su Lifan d5f5268585 Fix data race of proc_file_chain in _IO_new_proc_open()
Signed-off-by: Su Lifan <su-lifan@linux.alibaba.com>
2022-04-11 11:13:58 +08:00

25 lines
756 B
Diff

This patch provides a workaround of data race inside _IO_new_proc_open()
(upstream BZ#22834)
Signed-off-by: Su Lifan <su-lifan@linux.alibaba.com>
diff -aurN glibc-2.28.orig/libio/iopopen.c glibc-2.28/libio/iopopen.c
--- glibc-2.28.orig/libio/iopopen.c 2018-08-01 05:10:47.000000000 +0000
+++ glibc-2.28/libio/iopopen.c 2022-04-08 11:33:15.487864923 +0000
@@ -35,6 +35,7 @@
#include <sys/types.h>
#include <sys/wait.h>
#include <kernel-features.h>
+#include <atomic.h>
struct _IO_proc_file
{
@@ -168,6 +169,7 @@
_IO_lock_lock (proc_file_chain_lock);
#endif
((_IO_proc_file *) fp)->next = proc_file_chain;
+ atomic_write_barrier();
proc_file_chain = (_IO_proc_file *) fp;
#ifdef _IO_MTSAFE_IO
_IO_lock_unlock (proc_file_chain_lock);