[PATCH] cygwin: pread/pwrite: prevent EBADF error after fork()
Christian Franke
Christian.Franke@t-online.de
Wed Oct 23 09:48:49 GMT 2024
Corinna Vinschen wrote:
> Hi Christian,
>
> On Sep 24 12:09, Christian Franke wrote:
>> This addresses:
>> https://sourceware.org/pipermail/cygwin/2024-September/256468.html
>>
>> --
>> Regards,
>> Christian
>>
> Cool. Can you please add a matching entry to release/3.5.5?
Attached.
-------------- next part --------------
From eb7efd6518ea6e8bb8703dc1e6864aa90c3f4ce5 Mon Sep 17 00:00:00 2001
From: Christian Franke <christian.franke@t-online.de>
Date: Wed, 23 Oct 2024 11:44:34 +0200
Subject: [PATCH] cygwin: pread/pwrite: prevent EBADF error after fork()
If the parent process has already used pread() or pwrite(), these
functions fail with EBADF if used on the inherited fd. Ensure that
fix_after_fork() is called to invalidate the prw_handle. This issue
has been detected by 'stress-ng --pseek 1'.
Signed-off-by: Christian Franke <christian.franke@t-online.de>
---
winsup/cygwin/fhandler/disk_file.cc | 3 +++
winsup/cygwin/release/3.5.5 | 3 +++
2 files changed, 6 insertions(+)
diff --git a/winsup/cygwin/fhandler/disk_file.cc b/winsup/cygwin/fhandler/disk_file.cc
index f4c21d3b7..2008fb61b 100644
--- a/winsup/cygwin/fhandler/disk_file.cc
+++ b/winsup/cygwin/fhandler/disk_file.cc
@@ -1803,6 +1803,9 @@ fhandler_disk_file::prw_open (bool write, void *aio)
return -1;
}
+ /* prw_handle is invalid after fork. */
+ need_fork_fixup (true);
+
/* record prw_handle's asyncness for subsequent pread/pwrite operations */
prw_handle_isasync = !!aio;
return 0;
diff --git a/winsup/cygwin/release/3.5.5 b/winsup/cygwin/release/3.5.5
index 904119a38..d01f31c60 100644
--- a/winsup/cygwin/release/3.5.5
+++ b/winsup/cygwin/release/3.5.5
@@ -7,3 +7,6 @@ Fixes:
- Fix a regression in 3.5.4 that writing to pipe extremely slows down.
Addresses: https://cygwin.com/pipermail/cygwin/2024-August/256398.html
+
+- Fix pread() and pwrite() EBADF error after fork().
+ Addresses: https://sourceware.org/pipermail/cygwin/2024-September/256468.html
--
2.45.1
More information about the Cygwin-patches
mailing list