diff options
author | 2004-11-01 16:01:05 +0000 | |
---|---|---|
committer | 2004-11-01 16:01:05 +0000 | |
commit | 180ff6921b1d995194c159729c5d494b07b802ca (patch) | |
tree | cf7b1764ef187bef471509f178ab7b9074aff192 /kernel/dir.c | |
parent | b1ab8b54b772facdf642379ae0ff9d03c6dacc72 (diff) |
new mount option
Diffstat (limited to 'kernel/dir.c')
-rw-r--r-- | kernel/dir.c | 7 |
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); |