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:
Родитель
585d3bc06f
Коммит
a3ec947c85
|
@ -81,13 +81,16 @@ static int get_sb_mtd_aux(struct file_system_type *fs_type, int flags,
|
|||
|
||||
/* go */
|
||||
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 */
|
||||
already_mounted:
|
||||
DEBUG(1, "MTDSB: Device %d (\"%s\") is already mounted\n",
|
||||
mtd->index, mtd->name);
|
||||
ret = simple_set_mnt(mnt, sb);
|
||||
simple_set_mnt(mnt, sb);
|
||||
ret = 0;
|
||||
goto out_put;
|
||||
|
||||
out_error:
|
||||
|
|
|
@ -168,8 +168,9 @@ static int v9fs_get_sb(struct file_system_type *fs_type, int flags,
|
|||
p9stat_free(st);
|
||||
kfree(st);
|
||||
|
||||
P9_DPRINTK(P9_DEBUG_VFS, " return simple set mount\n");
|
||||
return simple_set_mnt(mnt, sb);
|
||||
P9_DPRINTK(P9_DEBUG_VFS, " simple set mount, return 0\n");
|
||||
simple_set_mnt(mnt, sb);
|
||||
return 0;
|
||||
|
||||
release_sb:
|
||||
if (sb) {
|
||||
|
|
|
@ -606,7 +606,8 @@ cifs_get_sb(struct file_system_type *fs_type,
|
|||
return rc;
|
||||
}
|
||||
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,
|
||||
|
|
|
@ -454,7 +454,8 @@ static int get_init_pts_sb(struct file_system_type *fs_type, int flags,
|
|||
s->s_flags |= MS_ACTIVE;
|
||||
}
|
||||
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);
|
||||
s->s_root = dentry;
|
||||
s->s_flags |= MS_ACTIVE;
|
||||
return simple_set_mnt(mnt, s);
|
||||
simple_set_mnt(mnt, s);
|
||||
return 0;
|
||||
|
||||
Enomem:
|
||||
up_write(&s->s_umount);
|
||||
|
|
|
@ -397,11 +397,10 @@ static void __mnt_unmake_readonly(struct vfsmount *mnt)
|
|||
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_root = dget(sb->s_root);
|
||||
return 0;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(simple_set_mnt);
|
||||
|
|
|
@ -83,7 +83,8 @@ static int proc_get_sb(struct file_system_type *fs_type,
|
|||
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)
|
||||
|
|
|
@ -831,7 +831,8 @@ int get_sb_bdev(struct file_system_type *fs_type,
|
|||
bdev->bd_super = s;
|
||||
}
|
||||
|
||||
return simple_set_mnt(mnt, s);
|
||||
simple_set_mnt(mnt, s);
|
||||
return 0;
|
||||
|
||||
error_s:
|
||||
error = PTR_ERR(s);
|
||||
|
@ -877,7 +878,8 @@ int get_sb_nodev(struct file_system_type *fs_type,
|
|||
return error;
|
||||
}
|
||||
s->s_flags |= MS_ACTIVE;
|
||||
return simple_set_mnt(mnt, s);
|
||||
simple_set_mnt(mnt, s);
|
||||
return 0;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(get_sb_nodev);
|
||||
|
@ -909,7 +911,8 @@ int get_sb_single(struct file_system_type *fs_type,
|
|||
s->s_flags |= MS_ACTIVE;
|
||||
}
|
||||
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);
|
||||
|
|
|
@ -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 */
|
||||
ubi_close_volume(ubi);
|
||||
|
||||
return simple_set_mnt(mnt, sb);
|
||||
simple_set_mnt(mnt, sb);
|
||||
return 0;
|
||||
|
||||
out_deact:
|
||||
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 *,
|
||||
const struct super_operations *ops, unsigned long,
|
||||
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);
|
||||
|
||||
/* 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);
|
||||
}
|
||||
|
||||
return simple_set_mnt(mnt, sb);
|
||||
simple_set_mnt(mnt, sb);
|
||||
return 0;
|
||||
|
||||
free_cg_links:
|
||||
free_cg_links(&tmp_cg_links);
|
||||
|
|
Загрузка…
Ссылка в новой задаче