staging/lustre/osc: Do not use lprocfs_write_helper in sysfs store methods
authorOleg Drokin <green@linuxhacker.ru>
Sun, 3 Jan 2016 17:05:46 +0000 (12:05 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 3 Feb 2016 22:34:00 +0000 (14:34 -0800)
sysfs store methods provide us with a kernel buffer already, but
lprocfs_write_helper is expecting a user buffer.
Replace lprocfs_write_helper with kstrto[u]int() calls instead in
contention_seconds_store() and lockless_truncate_store()

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

index 1091536..b69ec0f 100644 (file)
@@ -480,9 +480,19 @@ static ssize_t contention_seconds_store(struct kobject *kobj,
        struct obd_device *obd = container_of(kobj, struct obd_device,
                                              obd_kobj);
        struct osc_device *od  = obd2osc_dev(obd);
+       int rc;
+       int val;
+
+       rc = kstrtoint(buffer, 10, &val);
+       if (rc)
+               return rc;
+
+       if (val < 0)
+               return -EINVAL;
+
+       od->od_contention_time = val;
 
-       return lprocfs_write_helper(buffer, count, &od->od_contention_time) ?:
-               count;
+       return count;
 }
 LUSTRE_RW_ATTR(contention_seconds);
 
@@ -505,9 +515,16 @@ static ssize_t lockless_truncate_store(struct kobject *kobj,
        struct obd_device *obd = container_of(kobj, struct obd_device,
                                              obd_kobj);
        struct osc_device *od  = obd2osc_dev(obd);
+       int rc;
+       unsigned int val;
 
-       return lprocfs_write_helper(buffer, count, &od->od_lockless_truncate) ?:
-               count;
+       rc = kstrtouint(buffer, 10, &val);
+       if (rc)
+               return rc;
+
+       od->od_lockless_truncate = val;
+
+       return count;
 }
 LUSTRE_RW_ATTR(lockless_truncate);