Re: [glibc PATCH] fcntl: put F_OFD_* constants under #ifdef __USE_FILE_OFFSET64

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 17 Aug 2016 10:47, Jeff Layton wrote:
> The Linux kernel expects a flock64 structure whenever you use OFD locks
> with fcntl64. Unfortunately, you can currently build a 32-bit program
> that passes in a struct flock when it calls fcntl64.
> 
> Only define the F_OFD_* constants when __USE_FILE_OFFSET64 is also
> defined, so that the build fails in this situation rather than
> producing a broken binary.

this seems to be going against the glibc API/guarantees we've provided
before (or at least tried to promise), and what the fcntl(2) man page
says now.  namely, we haven't documented F_GETLK64 or struct flock64,
with the expectation that the user just calls fcntl() with a struct
flock.  in fact, the man page even goes so far as to discourage people
from using the *64 variants.

it should be possible using our existing LFS framework to make the OFD
cmds available even to 32-bit apps (where sizeof(off_t) == 32).  but
maybe the usage of F_GETLK64/struct flock64/etc... in the real world
has made it hard to put that genie back in the bottle ?  we'd have to
version the current fcntl symbol, create a new fcntl symbol that does
32->64 munging, and add a new fcntl64 symbol that we'd transparently
rewrite to when LFS is turned on.
-mike

Attachment: signature.asc
Description: Digital signature


[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux