mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-02 04:38:08 +00:00
fs: namespace: suppress 'may be used uninitialized' warnings
The gcc version 4.9.1 compiler complains Even though it isn't possible for these variables to not get initialized before they are used. fs/namespace.c: In function ‘SyS_mount’: fs/namespace.c:2720:8: warning: ‘kernel_dev’ may be used uninitialized in this function [-Wmaybe-uninitialized] ret = do_mount(kernel_dev, kernel_dir->name, kernel_type, flags, ^ fs/namespace.c:2699:8: note: ‘kernel_dev’ was declared here char *kernel_dev; ^ fs/namespace.c:2720:8: warning: ‘kernel_type’ may be used uninitialized in this function [-Wmaybe-uninitialized] ret = do_mount(kernel_dev, kernel_dir->name, kernel_type, flags, ^ fs/namespace.c:2697:8: note: ‘kernel_type’ was declared here char *kernel_type; ^ Fix the warnings by simplifying copy_mount_string() as suggested by Al Viro. Cc: Alexander Viro <viro@zeniv.linux.org.uk> Signed-off-by: Tim Gardner <tim.gardner@canonical.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
8ba7f6c2fa
commit
b8850d1fa8
10
fs/compat.c
10
fs/compat.c
@ -797,8 +797,9 @@ COMPAT_SYSCALL_DEFINE5(mount, const char __user *, dev_name,
|
|||||||
struct filename *dir;
|
struct filename *dir;
|
||||||
int retval;
|
int retval;
|
||||||
|
|
||||||
retval = copy_mount_string(type, &kernel_type);
|
kernel_type = copy_mount_string(type);
|
||||||
if (retval < 0)
|
retval = PTR_ERR(kernel_type);
|
||||||
|
if (IS_ERR(kernel_type))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
dir = getname(dir_name);
|
dir = getname(dir_name);
|
||||||
@ -806,8 +807,9 @@ COMPAT_SYSCALL_DEFINE5(mount, const char __user *, dev_name,
|
|||||||
if (IS_ERR(dir))
|
if (IS_ERR(dir))
|
||||||
goto out1;
|
goto out1;
|
||||||
|
|
||||||
retval = copy_mount_string(dev_name, &kernel_dev);
|
kernel_dev = copy_mount_string(dev_name);
|
||||||
if (retval < 0)
|
retval = PTR_ERR(kernel_dev);
|
||||||
|
if (IS_ERR(kernel_dev))
|
||||||
goto out2;
|
goto out2;
|
||||||
|
|
||||||
retval = copy_mount_options(data, &data_page);
|
retval = copy_mount_options(data, &data_page);
|
||||||
|
@ -51,7 +51,7 @@ extern int vfs_path_lookup(struct dentry *, struct vfsmount *,
|
|||||||
* namespace.c
|
* namespace.c
|
||||||
*/
|
*/
|
||||||
extern int copy_mount_options(const void __user *, unsigned long *);
|
extern int copy_mount_options(const void __user *, unsigned long *);
|
||||||
extern int copy_mount_string(const void __user *, char **);
|
extern char *copy_mount_string(const void __user *);
|
||||||
|
|
||||||
extern struct vfsmount *lookup_mnt(struct path *);
|
extern struct vfsmount *lookup_mnt(struct path *);
|
||||||
extern int finish_automount(struct vfsmount *, struct path *);
|
extern int finish_automount(struct vfsmount *, struct path *);
|
||||||
|
@ -2514,21 +2514,9 @@ int copy_mount_options(const void __user * data, unsigned long *where)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int copy_mount_string(const void __user *data, char **where)
|
char *copy_mount_string(const void __user *data)
|
||||||
{
|
{
|
||||||
char *tmp;
|
return data ? strndup_user(data, PAGE_SIZE) : NULL;
|
||||||
|
|
||||||
if (!data) {
|
|
||||||
*where = NULL;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
tmp = strndup_user(data, PAGE_SIZE);
|
|
||||||
if (IS_ERR(tmp))
|
|
||||||
return PTR_ERR(tmp);
|
|
||||||
|
|
||||||
*where = tmp;
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -2794,8 +2782,9 @@ SYSCALL_DEFINE5(mount, char __user *, dev_name, char __user *, dir_name,
|
|||||||
char *kernel_dev;
|
char *kernel_dev;
|
||||||
unsigned long data_page;
|
unsigned long data_page;
|
||||||
|
|
||||||
ret = copy_mount_string(type, &kernel_type);
|
kernel_type = copy_mount_string(type);
|
||||||
if (ret < 0)
|
ret = PTR_ERR(kernel_type);
|
||||||
|
if (IS_ERR(kernel_type))
|
||||||
goto out_type;
|
goto out_type;
|
||||||
|
|
||||||
kernel_dir = getname(dir_name);
|
kernel_dir = getname(dir_name);
|
||||||
@ -2804,8 +2793,9 @@ SYSCALL_DEFINE5(mount, char __user *, dev_name, char __user *, dir_name,
|
|||||||
goto out_dir;
|
goto out_dir;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = copy_mount_string(dev_name, &kernel_dev);
|
kernel_dev = copy_mount_string(dev_name);
|
||||||
if (ret < 0)
|
ret = PTR_ERR(kernel_dev);
|
||||||
|
if (IS_ERR(kernel_dev))
|
||||||
goto out_dev;
|
goto out_dev;
|
||||||
|
|
||||||
ret = copy_mount_options(data, &data_page);
|
ret = copy_mount_options(data, &data_page);
|
||||||
|
Loading…
Reference in New Issue
Block a user