Commit a3ec947c authored by Sukadev Bhattiprolu's avatar Sukadev Bhattiprolu Committed by Al Viro

vfs: simple_set_mnt() should return void

simple_set_mnt() is defined as returning 'int' but always returns 0.
Callers assume simple_set_mnt() never fails and don't properly cleanup if
it were to _ever_ fail.  For instance, get_sb_single() and get_sb_nodev()
should:

        up_write(sb->s_unmount);
        deactivate_super(sb);

if simple_set_mnt() fails.

Since simple_set_mnt() never fails, would be cleaner if it did not
return anything.

[akpm@linux-foundation.org: fix build]
Signed-off-by: default avatarSukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Acked-by: default avatarSerge Hallyn <serue@us.ibm.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Christoph Hellwig <hch@lst.de>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 585d3bc0
...@@ -81,13 +81,16 @@ static int get_sb_mtd_aux(struct file_system_type *fs_type, int flags, ...@@ -81,13 +81,16 @@ static int get_sb_mtd_aux(struct file_system_type *fs_type, int flags,
/* go */ /* go */
sb->s_flags |= MS_ACTIVE; sb->s_flags |= MS_ACTIVE;
return simple_set_mnt(mnt, sb); simple_set_mnt(mnt, sb);
return 0;
/* new mountpoint for an already mounted superblock */ /* new mountpoint for an already mounted superblock */
already_mounted: already_mounted:
DEBUG(1, "MTDSB: Device %d (\"%s\") is already mounted\n", DEBUG(1, "MTDSB: Device %d (\"%s\") is already mounted\n",
mtd->index, mtd->name); mtd->index, mtd->name);
ret = simple_set_mnt(mnt, sb); simple_set_mnt(mnt, sb);
ret = 0;
goto out_put; goto out_put;
out_error: out_error:
......
...@@ -168,8 +168,9 @@ static int v9fs_get_sb(struct file_system_type *fs_type, int flags, ...@@ -168,8 +168,9 @@ static int v9fs_get_sb(struct file_system_type *fs_type, int flags,
p9stat_free(st); p9stat_free(st);
kfree(st); kfree(st);
P9_DPRINTK(P9_DEBUG_VFS, " return simple set mount\n"); P9_DPRINTK(P9_DEBUG_VFS, " simple set mount, return 0\n");
return simple_set_mnt(mnt, sb); simple_set_mnt(mnt, sb);
return 0;
release_sb: release_sb:
if (sb) { if (sb) {
......
...@@ -606,7 +606,8 @@ cifs_get_sb(struct file_system_type *fs_type, ...@@ -606,7 +606,8 @@ cifs_get_sb(struct file_system_type *fs_type,
return rc; return rc;
} }
sb->s_flags |= MS_ACTIVE; sb->s_flags |= MS_ACTIVE;
return simple_set_mnt(mnt, sb); simple_set_mnt(mnt, sb);
return 0;
} }
static ssize_t cifs_file_aio_write(struct kiocb *iocb, const struct iovec *iov, static ssize_t cifs_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
......
...@@ -454,7 +454,8 @@ static int get_init_pts_sb(struct file_system_type *fs_type, int flags, ...@@ -454,7 +454,8 @@ static int get_init_pts_sb(struct file_system_type *fs_type, int flags,
s->s_flags |= MS_ACTIVE; s->s_flags |= MS_ACTIVE;
} }
do_remount_sb(s, flags, data, 0); do_remount_sb(s, flags, data, 0);
return simple_set_mnt(mnt, s); simple_set_mnt(mnt, s);
return 0;
} }
/* /*
......
...@@ -242,7 +242,8 @@ int get_sb_pseudo(struct file_system_type *fs_type, char *name, ...@@ -242,7 +242,8 @@ int get_sb_pseudo(struct file_system_type *fs_type, char *name,
d_instantiate(dentry, root); d_instantiate(dentry, root);
s->s_root = dentry; s->s_root = dentry;
s->s_flags |= MS_ACTIVE; s->s_flags |= MS_ACTIVE;
return simple_set_mnt(mnt, s); simple_set_mnt(mnt, s);
return 0;
Enomem: Enomem:
up_write(&s->s_umount); up_write(&s->s_umount);
......
...@@ -397,11 +397,10 @@ static void __mnt_unmake_readonly(struct vfsmount *mnt) ...@@ -397,11 +397,10 @@ static void __mnt_unmake_readonly(struct vfsmount *mnt)
spin_unlock(&vfsmount_lock); spin_unlock(&vfsmount_lock);
} }
int simple_set_mnt(struct vfsmount *mnt, struct super_block *sb) void simple_set_mnt(struct vfsmount *mnt, struct super_block *sb)
{ {
mnt->mnt_sb = sb; mnt->mnt_sb = sb;
mnt->mnt_root = dget(sb->s_root); mnt->mnt_root = dget(sb->s_root);
return 0;
} }
EXPORT_SYMBOL(simple_set_mnt); EXPORT_SYMBOL(simple_set_mnt);
......
...@@ -83,7 +83,8 @@ static int proc_get_sb(struct file_system_type *fs_type, ...@@ -83,7 +83,8 @@ static int proc_get_sb(struct file_system_type *fs_type,
ns->proc_mnt = mnt; ns->proc_mnt = mnt;
} }
return simple_set_mnt(mnt, sb); simple_set_mnt(mnt, sb);
return 0;
} }
static void proc_kill_sb(struct super_block *sb) static void proc_kill_sb(struct super_block *sb)
......
...@@ -831,7 +831,8 @@ int get_sb_bdev(struct file_system_type *fs_type, ...@@ -831,7 +831,8 @@ int get_sb_bdev(struct file_system_type *fs_type,
bdev->bd_super = s; bdev->bd_super = s;
} }
return simple_set_mnt(mnt, s); simple_set_mnt(mnt, s);
return 0;
error_s: error_s:
error = PTR_ERR(s); error = PTR_ERR(s);
...@@ -877,7 +878,8 @@ int get_sb_nodev(struct file_system_type *fs_type, ...@@ -877,7 +878,8 @@ int get_sb_nodev(struct file_system_type *fs_type,
return error; return error;
} }
s->s_flags |= MS_ACTIVE; s->s_flags |= MS_ACTIVE;
return simple_set_mnt(mnt, s); simple_set_mnt(mnt, s);
return 0;
} }
EXPORT_SYMBOL(get_sb_nodev); EXPORT_SYMBOL(get_sb_nodev);
...@@ -909,7 +911,8 @@ int get_sb_single(struct file_system_type *fs_type, ...@@ -909,7 +911,8 @@ int get_sb_single(struct file_system_type *fs_type,
s->s_flags |= MS_ACTIVE; s->s_flags |= MS_ACTIVE;
} }
do_remount_sb(s, flags, data, 0); do_remount_sb(s, flags, data, 0);
return simple_set_mnt(mnt, s); simple_set_mnt(mnt, s);
return 0;
} }
EXPORT_SYMBOL(get_sb_single); EXPORT_SYMBOL(get_sb_single);
......
...@@ -2034,7 +2034,8 @@ static int ubifs_get_sb(struct file_system_type *fs_type, int flags, ...@@ -2034,7 +2034,8 @@ static int ubifs_get_sb(struct file_system_type *fs_type, int flags,
/* 'fill_super()' opens ubi again so we must close it here */ /* 'fill_super()' opens ubi again so we must close it here */
ubi_close_volume(ubi); ubi_close_volume(ubi);
return simple_set_mnt(mnt, sb); simple_set_mnt(mnt, sb);
return 0;
out_deact: out_deact:
up_write(&sb->s_umount); up_write(&sb->s_umount);
......
...@@ -1719,7 +1719,7 @@ struct super_block *sget(struct file_system_type *type, ...@@ -1719,7 +1719,7 @@ struct super_block *sget(struct file_system_type *type,
extern int get_sb_pseudo(struct file_system_type *, char *, extern int get_sb_pseudo(struct file_system_type *, char *,
const struct super_operations *ops, unsigned long, const struct super_operations *ops, unsigned long,
struct vfsmount *mnt); struct vfsmount *mnt);
extern int simple_set_mnt(struct vfsmount *mnt, struct super_block *sb); extern void simple_set_mnt(struct vfsmount *mnt, struct super_block *sb);
int __put_super_and_need_restart(struct super_block *sb); int __put_super_and_need_restart(struct super_block *sb);
/* Alas, no aliases. Too much hassle with bringing module.h everywhere */ /* Alas, no aliases. Too much hassle with bringing module.h everywhere */
......
...@@ -1071,7 +1071,8 @@ static int cgroup_get_sb(struct file_system_type *fs_type, ...@@ -1071,7 +1071,8 @@ static int cgroup_get_sb(struct file_system_type *fs_type,
mutex_unlock(&cgroup_mutex); mutex_unlock(&cgroup_mutex);
} }
return simple_set_mnt(mnt, sb); simple_set_mnt(mnt, sb);
return 0;
free_cg_links: free_cg_links:
free_cg_links(&tmp_cg_links); free_cg_links(&tmp_cg_links);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment