struct device_attribute *attr,
                                         const char *buf, size_t count)
 {
-       int status, len;
+       int status;
        struct ctlr_info *h;
        struct Scsi_Host *shost = class_to_shost(dev);
-       char tmpbuf[10];
 
        if (!capable(CAP_SYS_ADMIN) || !capable(CAP_SYS_RAWIO))
                return -EACCES;
-       len = count > sizeof(tmpbuf) - 1 ? sizeof(tmpbuf) - 1 : count;
-       strncpy(tmpbuf, buf, len);
-       tmpbuf[len] = '\0';
-       if (sscanf(tmpbuf, "%d", &status) != 1)
+       if (kstrtoint(buf, 10, &status))
                return -EINVAL;
        h = shost_to_hba(shost);
        h->acciopath_status = !!status;
                                         struct device_attribute *attr,
                                         const char *buf, size_t count)
 {
-       int debug_level, len;
+       int debug_level;
        struct ctlr_info *h;
        struct Scsi_Host *shost = class_to_shost(dev);
-       char tmpbuf[10];
 
        if (!capable(CAP_SYS_ADMIN) || !capable(CAP_SYS_RAWIO))
                return -EACCES;
-       len = count > sizeof(tmpbuf) - 1 ? sizeof(tmpbuf) - 1 : count;
-       strncpy(tmpbuf, buf, len);
-       tmpbuf[len] = '\0';
-       if (sscanf(tmpbuf, "%d", &debug_level) != 1)
+       if (kstrtoint(buf, 10, &debug_level))
                return -EINVAL;
        if (debug_level < 0)
                debug_level = 0;