From b8b729bd22c28c9116c2fce65dce207a35299c26 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Thu, 3 Sep 2020 17:37:11 -0400 Subject: fix missing O_LARGEFILE values on x86_64, x32, and mips64 prior to commit 685e40bb09f5f24a2af54ea09c97328808f76990, x86_64 was correctly passing O_LARGEFILE to SYS_open; it was removed (defined to 0 in the public header, and changed to use the public definition) as part of that change, probably out of a mistaken belief that it's not needed. however, on a mixed system with 32-bit and 64-bit binaries, it's important that all files be opened with O_LARGEFILE, even if the opening process is 64-bit, in case a descriptor is passed to a 32-bit process. otherwise, attempts to access past 2GB in the 32-bit process could produce EOVERFLOW. most 64-bit archs added later got this right alread, except for mips64. x32 was also affected. there are now fixed. --- arch/x32/bits/fcntl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'arch/x32/bits/fcntl.h') diff --git a/arch/x32/bits/fcntl.h b/arch/x32/bits/fcntl.h index 1b88ad39..08627f81 100644 --- a/arch/x32/bits/fcntl.h +++ b/arch/x32/bits/fcntl.h @@ -13,7 +13,7 @@ #define O_ASYNC 020000 #define O_DIRECT 040000 -#define O_LARGEFILE 0 +#define O_LARGEFILE 0100000 #define O_NOATIME 01000000 #define O_PATH 010000000 #define O_TMPFILE 020200000 -- cgit v1.2.1