diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-20 21:50:01 +0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-20 21:50:01 +0400 |
commit | 36231d255b8df9cb4698e9a3902c16067d5c1398 (patch) | |
tree | 78aac3506bce9984576c0bac23fe095c08b40550 /fs/open.c | |
parent | 19bf1c2c7b9f21b9fe86315c5758d26c3049c2ad (diff) | |
parent | 24924a20dab603089011f9d3eb7622f0f6ef93c0 (diff) | |
download | linux-36231d255b8df9cb4698e9a3902c16067d5c1398.tar.xz |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull vfs fixes from Al Viro:
"The sget() one is a long-standing bug and will need to go into -stable
(in fact, it had been originally caught in RHEL6), the other two are
3.11-only"
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
vfs: constify dentry parameter in d_count()
livelock avoidance in sget()
allow O_TMPFILE to work with O_WRONLY
Diffstat (limited to 'fs/open.c')
-rw-r--r-- | fs/open.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/open.c b/fs/open.c index 9156cb050d08..d53e29895082 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 |