From c8fad2ac099ade0e07e567cc8b8304d9e93a4a06 Mon Sep 17 00:00:00 2001 From: Santiago Gimeno Date: Fri, 23 Jun 2023 13:17:37 +0200 Subject: [PATCH] unix,fs: make no_pwritev access thread-safe (#4066) --- src/unix/fs.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/unix/fs.c b/src/unix/fs.c index 17c2d8faa..e9e323e74 100644 --- a/src/unix/fs.c +++ b/src/unix/fs.c @@ -1157,7 +1157,7 @@ static ssize_t uv__fs_lutime(uv_fs_t* req) { static ssize_t uv__fs_write(uv_fs_t* req) { #if defined(__linux__) - static int no_pwritev; + static _Atomic int no_pwritev; #endif ssize_t r; @@ -1186,7 +1186,7 @@ static ssize_t uv__fs_write(uv_fs_t* req) { r = pwritev(req->file, (struct iovec*) req->bufs, req->nbufs, req->off); #else # if defined(__linux__) - if (no_pwritev) retry: + if (atomic_load_explicit(&no_pwritev, memory_order_relaxed)) retry: # endif { r = pwrite(req->file, req->bufs[0].base, req->bufs[0].len, req->off); @@ -1198,7 +1198,7 @@ static ssize_t uv__fs_write(uv_fs_t* req) { req->nbufs, req->off); if (r == -1 && errno == ENOSYS) { - no_pwritev = 1; + atomic_store_explicit(&no_pwritev, 1, memory_order_relaxed); goto retry; } }