This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [glibc PATCH] fcntl: put F_OFD_* constants under #ifdef __USE_FILE_OFFSET64
- From: Jeff Layton <jlayton at redhat dot com>
- To: Florian Weimer <fweimer at redhat dot com>, libc-alpha at sourceware dot org
- Cc: linux-fsdevel at vger dot kernel dot org, Michael Kerrisk <mtk dot manpages at gmail dot com>, Carlos O'Donell <carlos at redhat dot com>, Yuriy Kolerov <Yuriy dot Kolerov at synopsys dot com>
- Date: Wed, 17 Aug 2016 13:39:56 -0400
- Subject: Re: [glibc PATCH] fcntl: put F_OFD_* constants under #ifdef __USE_FILE_OFFSET64
- Authentication-results: sourceware.org; auth=none
- References: <1471445251-2450-1-git-send-email-jlayton@redhat.com> <024779d0-2800-8e43-b65c-180eca70cc8b@redhat.com>
On Wed, 2016-08-17 at 19:34 +0200, Florian Weimer wrote:
> On 08/17/2016 04:47 PM, 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.
>
> Doesn't this affect legacy POSIX-style locks as well, under very similar
> circumstances?
>
>
No. The kernel will decide which type of struct it is based on whether
userland passes in F_SETLK or F_SETLK64. Since the older flock struct
is considered a legacy interface, I didn't plumb that in when I did
these patches originally. With my 20/20 hindsight, I probably should
have just done that, but it's a little late now...
--
Jeff Layton <jlayton@redhat.com>