diff options
author | Miklos Szeredi <mszeredi@suse.cz> | 2012-08-15 13:01:24 +0200 |
---|---|---|
committer | Miklos Szeredi <mszeredi@suse.cz> | 2012-08-15 13:01:24 +0200 |
commit | af109bca94a8a223c4632a4ff769b3419fe7ed8c (patch) | |
tree | 087998c103fe8374b8617b98401dc8d284939191 /fs/fuse | |
parent | 38227f78a5020b3100cbb0406c89807563b10dae (diff) | |
download | linux-af109bca94a8a223c4632a4ff769b3419fe7ed8c.tar.gz linux-af109bca94a8a223c4632a4ff769b3419fe7ed8c.tar.bz2 linux-af109bca94a8a223c4632a4ff769b3419fe7ed8c.zip |
fuse: check create mode in atomic open
Verify that the VFS is passing us a complete create mode with the S_IFREG to
atomic open.
Reported-by: Steve <steveamigauk@yahoo.co.uk>
Reported-by: Richard W.M. Jones <rjones@redhat.com>
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Tested-by: Richard W.M. Jones <rjones@redhat.com>
Diffstat (limited to 'fs/fuse')
-rw-r--r-- | fs/fuse/dir.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c index 8964cf3999b2..324bc0850534 100644 --- a/fs/fuse/dir.c +++ b/fs/fuse/dir.c @@ -383,6 +383,9 @@ static int fuse_create_open(struct inode *dir, struct dentry *entry, struct fuse_entry_out outentry; struct fuse_file *ff; + /* Userspace expects S_IFREG in create mode */ + BUG_ON((mode & S_IFMT) != S_IFREG); + forget = fuse_alloc_forget(); err = -ENOMEM; if (!forget) |