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. what about ILP32 targets like x32 ? sizeof(flock) == sizeof(flock64) is the same there. > --- a/manual/examples/ofdlocks.c > +++ b/manual/examples/ofdlocks.c > @@ -15,6 +15,7 @@ > along with this program; if not, see <http://www.gnu.org/licenses/>. > */ > > +/* Note that this must be built with -D_FILE_OFFSET_BITS=64 on 32-bit arch */ GNU style says comments are complete sentences (so ends with a period), and there's two spaces after the period. > --- a/sysdeps/unix/sysv/linux/bits/fcntl-linux.h > +++ b/sysdeps/unix/sysv/linux/bits/fcntl-linux.h > @@ -127,11 +127,18 @@ > This means that they are inherited across fork or clone with CLONE_FILES > like BSD (flock) locks, and they are only released automatically when the > last reference to the the file description against which they were acquired > - is put. */ > + is put. > + > + Note that the kernel does not support the legacy struct flock on 32-bit > + arches with OFD locks. On those arches you need define both _GNU_SOURCE > + and _FILE_OFFSET_BITS=64. > + */ comment style says the */ has to be on the previous line -- look at how the code looked before your change. also, two spaces after periods. -mike
Attachment:
signature.asc
Description: Digital signature