diff options
author | Miklos Szeredi <miklos@szeredi.hu> | 2004-02-17 08:57:29 +0000 |
---|---|---|
committer | Miklos Szeredi <miklos@szeredi.hu> | 2004-02-17 08:57:29 +0000 |
commit | 69cc79ad513988f2cf1a2ebc72a0327c6d043161 (patch) | |
tree | 4aab6ea6f9061354633870e088d9c15a6cd14084 /kernel | |
parent | 3ca0dc5d3ef86d72183a13d5e59c776876e00eab (diff) | |
download | libfuse-69cc79ad513988f2cf1a2ebc72a0327c6d043161.tar.gz |
support for user mounts
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/dev.c | 2 | ||||
-rw-r--r-- | kernel/dir.c | 3 | ||||
-rw-r--r-- | kernel/inode.c | 11 |
3 files changed, 12 insertions, 4 deletions
diff --git a/kernel/dev.c b/kernel/dev.c index daa464e..a31615d 100644 --- a/kernel/dev.c +++ b/kernel/dev.c @@ -632,7 +632,7 @@ int fuse_dev_init() } proc_fs_fuse->owner = THIS_MODULE; - proc_fuse_dev = create_proc_entry("dev", S_IFSOCK | 0600, proc_fs_fuse); + proc_fuse_dev = create_proc_entry("dev", S_IFSOCK | 0666, proc_fs_fuse); if(!proc_fuse_dev) { printk("fuse: failed to create entry in /proc/fs/fuse\n"); goto err; diff --git a/kernel/dir.c b/kernel/dir.c index 0fffcab..5fec669 100644 --- a/kernel/dir.c +++ b/kernel/dir.c @@ -409,8 +409,7 @@ static int _fuse_permission(struct inode *inode, int mask) keeping it open... */ return err; - } - else + } else return 0; } diff --git a/kernel/inode.c b/kernel/inode.c index d896965..257b41d 100644 --- a/kernel/inode.c +++ b/kernel/inode.c @@ -23,6 +23,10 @@ #define kstatfs statfs #endif +#ifndef FS_SAFE +#define FS_SAFE 0 +#endif + static void fuse_read_inode(struct inode *inode) { /* No op */ @@ -193,6 +197,11 @@ static int fuse_read_super(struct super_block *sb, void *data, int silent) struct inode *root; struct fuse_mount_data *d = data; + if(!capable(CAP_SYS_ADMIN)) { + if(d->flags & FUSE_ALLOW_OTHER) + return -EPERM; + } + sb->s_blocksize = PAGE_CACHE_SIZE; sb->s_blocksize_bits = PAGE_CACHE_SHIFT; sb->s_magic = FUSE_SUPER_MAGIC; @@ -246,7 +255,7 @@ static struct file_system_type fuse_fs_type = { .name = "fuse", .get_sb = fuse_get_sb, .kill_sb = kill_anon_super, - .fs_flags = 0 + .fs_flags = FS_SAFE, }; #else static struct super_block *fuse_read_super_compat(struct super_block *sb, |