From c24896c0e3b32c8a9f614ef51366007b67d5c665 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Fri, 6 Aug 2021 15:15:10 +0200 Subject: bpo-44849: Fix os.set_inheritable() on FreeBSD 14 with O_PATH (GH-27623) Fix the os.set_inheritable() function on FreeBSD 14 for file descriptor opened with the O_PATH flag: ignore the EBADF error on ioctl(), fallback on the fcntl() implementation. --- Python/fileutils.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'Python/fileutils.c') diff --git a/Python/fileutils.c b/Python/fileutils.c index a8fab00629..e8a7eda505 100644 --- a/Python/fileutils.c +++ b/Python/fileutils.c @@ -1374,10 +1374,11 @@ set_inheritable(int fd, int inheritable, int raise, int *atomic_flag_works) return 0; } -#ifdef __linux__ +#ifdef O_PATH if (errno == EBADF) { - // On Linux, ioctl(FIOCLEX) will fail with EBADF for O_PATH file descriptors - // Fall through to the fcntl() path + // bpo-44849: On Linux and FreeBSD, ioctl(FIOCLEX) fails with EBADF + // on O_PATH file descriptors. Fall through to the fcntl() + // implementation. } else #endif -- cgit v1.2.1