aboutsummaryrefslogtreecommitdiff
path: root/kernel/dir.c
diff options
context:
space:
mode:
authorGravatar Miklos Szeredi <miklos@szeredi.hu>2004-11-01 16:01:05 +0000
committerGravatar Miklos Szeredi <miklos@szeredi.hu>2004-11-01 16:01:05 +0000
commit180ff6921b1d995194c159729c5d494b07b802ca (patch)
treecf7b1764ef187bef471509f178ab7b9074aff192 /kernel/dir.c
parentb1ab8b54b772facdf642379ae0ff9d03c6dacc72 (diff)
new mount option
Diffstat (limited to 'kernel/dir.c')
-rw-r--r--kernel/dir.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/kernel/dir.c b/kernel/dir.c
index 87dec6a..36eb3bf 100644
--- a/kernel/dir.c
+++ b/kernel/dir.c
@@ -505,7 +505,9 @@ static int fuse_revalidate(struct dentry *entry)
if (inode->i_ino == FUSE_ROOT_INO) {
if (!(fc->flags & FUSE_ALLOW_OTHER) &&
- current->fsuid != fc->uid)
+ current->fsuid != fc->uid &&
+ (!(fc->flags & FUSE_ALLOW_ROOT) ||
+ current->fsuid != 0))
return -EACCES;
} else if (!fi->i_time || time_before_eq(jiffies, fi->i_time))
return 0;
@@ -517,7 +519,8 @@ static int _fuse_permission(struct inode *inode, int mask)
{
struct fuse_conn *fc = INO_FC(inode);
- if (!(fc->flags & FUSE_ALLOW_OTHER) && current->fsuid != fc->uid)
+ if (!(fc->flags & FUSE_ALLOW_OTHER) && current->fsuid != fc->uid &&
+ (!(fc->flags & FUSE_ALLOW_ROOT) || current->fsuid != 0))
return -EACCES;
else if (fc->flags & FUSE_DEFAULT_PERMISSIONS) {
int err = vfs_permission(inode, mask);