]> Pileus Git - ~andy/linux/blobdiff - drivers/s390/cio/ccwgroup.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
[~andy/linux] / drivers / s390 / cio / ccwgroup.c
index f38923e38e92be588d915d8616bd5bb897419b2e..26a930e832bdab58c7f649c866124200e1f3f8c8 100644 (file)
@@ -16,7 +16,6 @@
 #include <linux/ctype.h>
 #include <linux/dcache.h>
 
-#include <asm/semaphore.h>
 #include <asm/ccwdev.h>
 #include <asm/ccwgroup.h>
 
@@ -374,7 +373,7 @@ ccwgroup_online_store (struct device *dev, struct device_attribute *attr, const
 {
        struct ccwgroup_device *gdev;
        struct ccwgroup_driver *gdrv;
-       unsigned int value;
+       unsigned long value;
        int ret;
 
        gdev = to_ccwgroupdev(dev);
@@ -385,7 +384,9 @@ ccwgroup_online_store (struct device *dev, struct device_attribute *attr, const
        if (!try_module_get(gdrv->owner))
                return -EINVAL;
 
-       value = simple_strtoul(buf, NULL, 0);
+       ret = strict_strtoul(buf, 0, &value);
+       if (ret)
+               goto out;
        ret = count;
        if (value == 1)
                ccwgroup_set_online(gdev);
@@ -393,6 +394,7 @@ ccwgroup_online_store (struct device *dev, struct device_attribute *attr, const
                ccwgroup_set_offline(gdev);
        else
                ret = -EINVAL;
+out:
        module_put(gdrv->owner);
        return ret;
 }