From 96dfad7555e4cc410caf60408f517154119169da Mon Sep 17 00:00:00 2001 From: Miklos Szeredi Date: Tue, 30 Nov 2004 00:00:02 +0000 Subject: merge to 2_0_merge4 --- kernel/dir.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'kernel') diff --git a/kernel/dir.c b/kernel/dir.c index fe8e803..19834b4 100644 --- a/kernel/dir.c +++ b/kernel/dir.c @@ -633,8 +633,15 @@ static int fuse_permission(struct inode *inode, int mask, struct nameidata *nd) keeping it open... */ return err; - } else + } else { + int mode = inode->i_mode; + if ((mask & MAY_WRITE) && IS_RDONLY(inode) && + (S_ISREG(mode) || S_ISDIR(mode) || S_ISLNK(mode))) + return -EROFS; + if ((mask & MAY_EXEC) && !S_ISDIR(mode) && !(mode & S_IXUGO)) + return -EACCES; return 0; + } } static int parse_dirfile(char *buf, size_t nbytes, struct file *file, -- cgit v1.2.3