staging/lustre: Get rid of an ugly statfs hack in lov_iocontrol
authorOleg Drokin <green@linuxhacker.ru>
Sun, 3 Jan 2016 17:05:42 +0000 (12:05 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 3 Feb 2016 22:27:25 +0000 (14:27 -0800)
For some crazy reason ll_obd_statfs decided to decode async flag
passed from userspace and then pass it via a userspace pointer
argument to lov_iocontrol.
This patch moves flags decoding to lov_iocontrol where it belongs.

Signed-off-by: Oleg Drokin <green@linuxhacker.ru>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/lustre/lustre/llite/llite_lib.c
drivers/staging/lustre/lustre/lov/lov_obd.c

index b2fc5b3786ee62890956c25f6972ee329489346f..efff8307fb0600a0ddc38f150454c7e2af120121 100644 (file)
@@ -2026,7 +2026,6 @@ int ll_obd_statfs(struct inode *inode, void *arg)
        char *buf = NULL;
        struct obd_ioctl_data *data = NULL;
        __u32 type;
-       __u32 flags;
        int len = 0, rc;
 
        if (!inode) {
@@ -2069,8 +2068,7 @@ int ll_obd_statfs(struct inode *inode, void *arg)
                goto out_statfs;
        }
 
-       flags = (type & LL_STATFS_NODELAY) ? OBD_STATFS_NODELAY : 0;
-       rc = obd_iocontrol(IOC_OBD_STATFS, exp, len, buf, &flags);
+       rc = obd_iocontrol(IOC_OBD_STATFS, exp, len, buf, NULL);
        if (rc)
                goto out_statfs;
 out_statfs:
index 6c2bdfe9cdcf7a861fda0f305cc777b33fec94c4..1dde0b8fa9a6b6ed9403f9506f95547bbf1dc320 100644 (file)
@@ -1420,7 +1420,9 @@ static int lov_iocontrol(unsigned int cmd, struct obd_export *exp, int len,
                                         (int) sizeof(struct obd_uuid))))
                        return -EFAULT;
 
-               flags = uarg ? *(__u32 *)uarg : 0;
+               memcpy(&flags, data->ioc_inlbuf1, sizeof(__u32));
+               flags = flags & LL_STATFS_NODELAY ? OBD_STATFS_NODELAY : 0;
+
                /* got statfs data */
                rc = obd_statfs(NULL, lov->lov_tgts[index]->ltd_exp, &stat_buf,
                                cfs_time_shift_64(-OBD_STATFS_CACHE_SECONDS),