diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-29 08:06:25 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-29 08:06:25 -0700 |
commit | 53113b06e48c6c38f7612c1f8043b8a0d2adf72b (patch) | |
tree | b50f098b72b6389fde956d8272c08169ff2b53cc /fs/proc/root.c | |
parent | 37542b6a7e73e81f8c066a48e6911e476ee3b22f (diff) | |
parent | a4cdbd8bfb87ceff455aae85727077889b75001b (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (29 commits)
braino in internal.h
convert simple cases of nfs-related ->get_sb() to ->mount()
convert btrfs
convert ceph
convert gfs2
convert afs
convert ecryptfs
convert sysfs
convert cgroup and cpuset
switch get_sb_ns() users
switch procfs to ->mount()
setting ->proc_mnt doesn't belong in proc_get_sb()
convert cifs
convert nilfs
switch logfs to ->mount()
logfs: fix a leak in get_sb
logfs get_sb, part 3
logfs get_sb, part 2
logfs get_sb massage, part 1
convert v9fs
...
Diffstat (limited to 'fs/proc/root.c')
-rw-r--r-- | fs/proc/root.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/fs/proc/root.c b/fs/proc/root.c index 93d99b316325..ef9fa8e24ad6 100644 --- a/fs/proc/root.c +++ b/fs/proc/root.c @@ -35,8 +35,8 @@ static int proc_set_super(struct super_block *sb, void *data) return set_anon_super(sb, NULL); } -static int proc_get_sb(struct file_system_type *fs_type, - int flags, const char *dev_name, void *data, struct vfsmount *mnt) +static struct dentry *proc_mount(struct file_system_type *fs_type, + int flags, const char *dev_name, void *data) { int err; struct super_block *sb; @@ -61,14 +61,14 @@ static int proc_get_sb(struct file_system_type *fs_type, sb = sget(fs_type, proc_test_super, proc_set_super, ns); if (IS_ERR(sb)) - return PTR_ERR(sb); + return ERR_CAST(sb); if (!sb->s_root) { sb->s_flags = flags; err = proc_fill_super(sb); if (err) { deactivate_locked_super(sb); - return err; + return ERR_PTR(err); } ei = PROC_I(sb->s_root->d_inode); @@ -79,11 +79,9 @@ static int proc_get_sb(struct file_system_type *fs_type, } sb->s_flags |= MS_ACTIVE; - ns->proc_mnt = mnt; } - simple_set_mnt(mnt, sb); - return 0; + return dget(sb->s_root); } static void proc_kill_sb(struct super_block *sb) @@ -97,7 +95,7 @@ static void proc_kill_sb(struct super_block *sb) static struct file_system_type proc_fs_type = { .name = "proc", - .get_sb = proc_get_sb, + .mount = proc_mount, .kill_sb = proc_kill_sb, }; @@ -115,6 +113,7 @@ void __init proc_root_init(void) return; } + init_pid_ns.proc_mnt = proc_mnt; proc_symlink("mounts", NULL, "self/mounts"); proc_net_init(); @@ -213,6 +212,7 @@ int pid_ns_prepare_proc(struct pid_namespace *ns) if (IS_ERR(mnt)) return PTR_ERR(mnt); + ns->proc_mnt = mnt; return 0; } |