25 lines
756 B
Diff
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);
|