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: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com> Acked-by: Serge Hallyn <serue@us.ibm.com> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Christoph Hellwig <hch@lst.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
committed by
Al Viro
parent
585d3bc06f
commit
a3ec947c85
@ -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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
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)
|
|||||||
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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
/* '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,
|
|||||||
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,
|
|||||||
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);
|
||||||
|
Reference in New Issue
Block a user