[PATCH] cygwin: pread/pwrite: prevent EBADF error after fork()
Corinna Vinschen
corinna-cygwin@cygwin.com
Tue Oct 22 14:47:43 GMT 2024
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?
Thanks,
Corinna
> From a688e962eb493140010a75dc24b6b49b34b7d558 Mon Sep 17 00:00:00 2001
> From: Christian Franke <christian.franke@t-online.de>
> Date: Tue, 24 Sep 2024 11:56:43 +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 +++
> 1 file changed, 3 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;
> --
> 2.45.1
>
More information about the Cygwin-patches
mailing list