]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commitdiff
staging/lustre: Mark obd_ioctl_popdata/getdata argument as __user
authorOleg Drokin <green@linuxhacker.ru>
Sun, 3 Jan 2016 17:05:40 +0000 (12:05 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 3 Feb 2016 22:27:25 +0000 (14:27 -0800)
arg is a userspace pointer and marking it as such makes sparse happy.

Signed-off-by: Oleg Drokin <green@linuxhacker.ru>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/lustre/lustre/include/lustre_lib.h
drivers/staging/lustre/lustre/llite/dir.c
drivers/staging/lustre/lustre/obdclass/class_obd.c
drivers/staging/lustre/lustre/obdclass/linux/linux-module.c

index 3d75a8292d5f1d1fba462630cfda815f9fa84e7a..cfccf7ca04c4aa7ad84a9f198371ac87b099f81c 100644 (file)
@@ -252,8 +252,8 @@ static inline int obd_ioctl_is_invalid(struct obd_ioctl_data *data)
 #include "obd_support.h"
 
 /* function defined in lustre/obdclass/<platform>/<platform>-module.c */
-int obd_ioctl_getdata(char **buf, int *len, void *arg);
-int obd_ioctl_popdata(void *arg, void *data, int len);
+int obd_ioctl_getdata(char **buf, int *len, void __user *arg);
+int obd_ioctl_popdata(void __user *arg, void *data, int len);
 
 static inline void obd_ioctl_freedata(char *buf, int len)
 {
index 2a5babe555e6cca9ca1f60718446a697457cdaf7..eb2fc23574ca8b0fcaa80d59ad309d7c93046a80 100644 (file)
@@ -1279,7 +1279,7 @@ static long ll_dir_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
                char *filename;
                struct md_op_data *op_data;
 
-               rc = obd_ioctl_getdata(&buf, &len, (void *)arg);
+               rc = obd_ioctl_getdata(&buf, &len, (void __user *)arg);
                if (rc)
                        return rc;
                data = (void *)buf;
@@ -1321,7 +1321,7 @@ out_free:
                int              len;
                int              rc;
 
-               rc = obd_ioctl_getdata(&buf, &len, (void *)arg);
+               rc = obd_ioctl_getdata(&buf, &len, (void __user *)arg);
                if (rc)
                        return rc;
 
index 0975e443057c001086573030a3f827078d3a22ce..65cf46c8c86ed438d945c4e531eba5b9af6609d1 100644 (file)
@@ -180,7 +180,7 @@ int class_handle_ioctl(unsigned int cmd, unsigned long arg)
        }
 
        CDEBUG(D_IOCTL, "cmd = %x\n", cmd);
-       if (obd_ioctl_getdata(&buf, &len, (void *)arg)) {
+       if (obd_ioctl_getdata(&buf, &len, (void __user *)arg)) {
                CERROR("OBD ioctl: data error\n");
                return -EINVAL;
        }
@@ -227,7 +227,7 @@ int class_handle_ioctl(unsigned int cmd, unsigned long arg)
                memcpy(data->ioc_bulk, BUILD_VERSION,
                       strlen(BUILD_VERSION) + 1);
 
-               err = obd_ioctl_popdata((void *)arg, data, len);
+               err = obd_ioctl_popdata((void __user *)arg, data, len);
                if (err)
                        err = -EFAULT;
                goto out;
@@ -246,7 +246,8 @@ int class_handle_ioctl(unsigned int cmd, unsigned long arg)
                        goto out;
                }
 
-               err = obd_ioctl_popdata((void *)arg, data, sizeof(*data));
+               err = obd_ioctl_popdata((void __user *)arg, data,
+                                       sizeof(*data));
                if (err)
                        err = -EFAULT;
                goto out;
@@ -283,7 +284,8 @@ int class_handle_ioctl(unsigned int cmd, unsigned long arg)
 
                CDEBUG(D_IOCTL, "device name %s, dev %d\n", data->ioc_inlbuf1,
                       dev);
-               err = obd_ioctl_popdata((void *)arg, data, sizeof(*data));
+               err = obd_ioctl_popdata((void __user *)arg, data,
+                                       sizeof(*data));
                if (err)
                        err = -EFAULT;
                goto out;
@@ -330,7 +332,7 @@ int class_handle_ioctl(unsigned int cmd, unsigned long arg)
                         (int)index, status, obd->obd_type->typ_name,
                         obd->obd_name, obd->obd_uuid.uuid,
                         atomic_read(&obd->obd_refcount));
-               err = obd_ioctl_popdata((void *)arg, data, len);
+               err = obd_ioctl_popdata((void __user *)arg, data, len);
 
                err = 0;
                goto out;
@@ -388,7 +390,7 @@ int class_handle_ioctl(unsigned int cmd, unsigned long arg)
                if (err)
                        goto out;
 
-               err = obd_ioctl_popdata((void *)arg, data, len);
+               err = obd_ioctl_popdata((void __user *)arg, data, len);
                if (err)
                        err = -EFAULT;
                goto out;
index a055cbb4f1628b75617a419d6a76550bc968ce67..f8d3a639e85c3d013700a75ac8415564844d007b 100644 (file)
 #include "../../include/lustre/lustre_build_version.h"
 
 /* buffer MUST be at least the size of obd_ioctl_hdr */
-int obd_ioctl_getdata(char **buf, int *len, void *arg)
+int obd_ioctl_getdata(char **buf, int *len, void __user *arg)
 {
        struct obd_ioctl_hdr hdr;
        struct obd_ioctl_data *data;
        int err;
        int offset = 0;
 
-       if (copy_from_user(&hdr, (void *)arg, sizeof(hdr)))
+       if (copy_from_user(&hdr, arg, sizeof(hdr)))
                return -EFAULT;
 
        if (hdr.ioc_version != OBD_IOCTL_VERSION) {
@@ -114,7 +114,7 @@ int obd_ioctl_getdata(char **buf, int *len, void *arg)
        *len = hdr.ioc_len;
        data = (struct obd_ioctl_data *)*buf;
 
-       if (copy_from_user(*buf, (void *)arg, hdr.ioc_len)) {
+       if (copy_from_user(*buf, arg, hdr.ioc_len)) {
                err = -EFAULT;
                goto free_buf;
        }
@@ -156,7 +156,7 @@ free_buf:
 }
 EXPORT_SYMBOL(obd_ioctl_getdata);
 
-int obd_ioctl_popdata(void *arg, void *data, int len)
+int obd_ioctl_popdata(void __user *arg, void *data, int len)
 {
        int err;