]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - fs/coda/inode.c
Merge branch 'for-john' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211
[karo-tx-linux.git] / fs / coda / inode.c
index be2aa49094877c22d326b0466d9cfc32bb6ed94b..dada9d0abedeb9f3d5ae29b0d0d9bde577975f63 100644 (file)
@@ -20,6 +20,7 @@
 #include <linux/file.h>
 #include <linux/vfs.h>
 #include <linux/slab.h>
+#include <linux/pid_namespace.h>
 
 #include <asm/uaccess.h>
 
@@ -48,7 +49,7 @@ static struct inode *coda_alloc_inode(struct super_block *sb)
                return NULL;
        memset(&ei->c_fid, 0, sizeof(struct CodaFid));
        ei->c_flags = 0;
-       ei->c_uid = 0;
+       ei->c_uid = GLOBAL_ROOT_UID;
        ei->c_cached_perm = 0;
        spin_lock_init(&ei->c_lock);
        return &ei->vfs_inode;
@@ -129,7 +130,7 @@ static int get_device_index(struct coda_mount_data *data)
        f = fdget(data->fd);
        if (!f.file)
                goto Ebadf;
-       inode = f.file->f_path.dentry->d_inode;
+       inode = file_inode(f.file);
        if (!S_ISCHR(inode->i_mode) || imajor(inode) != CODA_PSDEV_MAJOR) {
                fdput(f);
                goto Ebadf;
@@ -157,6 +158,9 @@ static int coda_fill_super(struct super_block *sb, void *data, int silent)
        int error;
        int idx;
 
+       if (task_active_pid_ns(current) != &init_pid_ns)
+               return -EINVAL;
+
        idx = get_device_index((struct coda_mount_data *) data);
 
        /* Ignore errors in data, for backward compatibility */