From: Al Viro Date: Fri, 19 Jul 2013 23:11:32 +0000 (+0400) Subject: allow O_TMPFILE to work with O_WRONLY X-Git-Tag: v3.11-rc2~4^2~2 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=ba57ea64cb1820deb37637de0fdb107f0dc90089;p=~emulex%2Finfiniband.git allow O_TMPFILE to work with O_WRONLY Signed-off-by: Al Viro --- diff --git a/fs/open.c b/fs/open.c index 9156cb050d0..d53e2989508 100644 --- a/fs/open.c +++ b/fs/open.c @@ -844,6 +844,8 @@ static inline int build_open_flags(int flags, umode_t mode, struct open_flags *o if ((flags & O_TMPFILE_MASK) != O_TMPFILE) return -EINVAL; acc_mode = MAY_OPEN | ACC_MODE(flags); + if (!(acc_mode & MAY_WRITE)) + return -EINVAL; } else if (flags & O_PATH) { /* * If we have O_PATH in the open flag. Then we diff --git a/include/uapi/asm-generic/fcntl.h b/include/uapi/asm-generic/fcntl.h index 05ac354e124..95e46c8e05f 100644 --- a/include/uapi/asm-generic/fcntl.h +++ b/include/uapi/asm-generic/fcntl.h @@ -89,8 +89,8 @@ #endif /* a horrid kludge trying to make sure that this will fail on old kernels */ -#define O_TMPFILE (__O_TMPFILE | O_DIRECTORY | O_RDWR) -#define O_TMPFILE_MASK (__O_TMPFILE | O_DIRECTORY | O_CREAT | O_ACCMODE) +#define O_TMPFILE (__O_TMPFILE | O_DIRECTORY) +#define O_TMPFILE_MASK (__O_TMPFILE | O_DIRECTORY | O_CREAT) #ifndef O_NDELAY #define O_NDELAY O_NONBLOCK