All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeff Layton <jlayton@redhat.com>
To: libc-alpha@sourceware.org
Cc: linux-fsdevel@vger.kernel.org, chrubis@suse.cz
Subject: [glibc PATCH] fcntl-linux.h: add F_OFD_*32 constants
Date: Thu, 18 Aug 2016 08:03:35 -0400	[thread overview]
Message-ID: <1471521815-4340-1-git-send-email-jlayton@redhat.com> (raw)

The original assumption with OFD lock support was that userland would
always pass in a struct flock that has been set up for large file
support (LFS). It's possible however for someone to build a 32-bit
program without large file support, and still try to use OFD locks. If
that happens then it will send a non-LFS struct flock to the kernel,
which will then try to interpret it as a LFS one, which can cause
unexpected results.

My original idea was to just ensure that the build would fail in this
case by not defining the F_OFD_* constants when LFS support was not
enabled.

Instead though, it's probably better long-term to just go ahead and
support OFD locks with non-LFS struct flock. To do that without breaking
programs that are already working, we add a set of F_OFD_*32 constants,
and add the plumbing to the kernel to make those do the right thing.

This patch adds the same constants to glibc, and has it redefine the
"normal" F_OFD_* constants to their *32 equvalents when LFS support is
not in use.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
---
 ChangeLog                                  |  4 ++++
 sysdeps/unix/sysv/linux/bits/fcntl-linux.h | 17 +++++++++++++----
 2 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 59c68d8b9d0d..4a2488b50054 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2016-08-18  Jeff Layton <jlayton@redhat.com>
+	* sysdeps/unix/sysv/linux/bits/fcntl-linux.h:
+	Add F_OFD_GETLK32, F_OFD_SETLK32, F_OFD_SETLKW32
+
 2016-08-18  Stefan Liebler  <stli@linux.vnet.ibm.com>
 
 	* sysdeps/ieee754/dbl-64/k_rem_pio2.c (__kernel_rem_pio2):
diff --git a/sysdeps/unix/sysv/linux/bits/fcntl-linux.h b/sysdeps/unix/sysv/linux/bits/fcntl-linux.h
index 7e5b0aecdcb4..9cb1b5f6f3ec 100644
--- a/sysdeps/unix/sysv/linux/bits/fcntl-linux.h
+++ b/sysdeps/unix/sysv/linux/bits/fcntl-linux.h
@@ -127,11 +127,20 @@
    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.  */
 #ifdef __USE_GNU
-# define F_OFD_GETLK	36
-# define F_OFD_SETLK	37
-# define F_OFD_SETLKW	38
+# if __OFF_T_MATCHES_OFF64_T || defined __USE_FILE_OFFSET64
+#  define F_OFD_GETLK		36
+#  define F_OFD_SETLK		37
+#  define F_OFD_SETLKW		38
+# else
+#  define F_OFD_GETLK32		39
+#  define F_OFD_SETLK32		40
+#  define F_OFD_SETLKW32	41
+#  define F_OFD_GETLK		F_OFD_GETLK32
+#  define F_OFD_SETLK		F_OFD_SETLK32
+#  define F_OFD_SETLKW		F_OFD_SETLKW32
+# endif
 #endif
 
 #ifdef __USE_LARGEFILE64
-- 
2.7.4


             reply	other threads:[~2016-08-18 12:03 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-18 12:03 Jeff Layton [this message]
2016-08-18 13:04 ` [glibc PATCH] fcntl-linux.h: add F_OFD_*32 constants Mike Frysinger
2016-08-18 13:49   ` Jeff Layton
2016-08-18 16:00     ` Mike Frysinger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1471521815-4340-1-git-send-email-jlayton@redhat.com \
    --to=jlayton@redhat.com \
    --cc=chrubis@suse.cz \
    --cc=libc-alpha@sourceware.org \
    --cc=linux-fsdevel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.