}
 
 static ssize_t set_bank(struct sys_device *s, struct sysdev_attribute *attr,
-                       const char *buf, size_t siz)
+                       const char *buf, size_t size)
 {
-       char *end;
-       u64 new = simple_strtoull(buf, &end, 0);
+       u64 new;
 
-       if (end == buf)
+       if (strict_strtoull(buf, 0, &new) < 0)
                return -EINVAL;
 
        bank[attr - bank_attrs] = new;
        mce_restart();
 
-       return end-buf;
+       return size;
 }
 
 static ssize_t
 
 SHOW_FIELDS(threshold_limit)
 
 static ssize_t
-store_interrupt_enable(struct threshold_block *b, const char *buf, size_t count)
+store_interrupt_enable(struct threshold_block *b, const char *buf, size_t size)
 {
        struct thresh_restart tr;
        unsigned long new;
-       char *end;
 
-       new = simple_strtoul(buf, &end, 0);
-       if (end == buf)
+       if (strict_strtoul(buf, 0, &new) < 0)
                return -EINVAL;
 
        b->interrupt_enable = !!new;
 
        smp_call_function_single(b->cpu, threshold_restart_bank, &tr, 1);
 
-       return end - buf;
+       return size;
 }
 
 static ssize_t
-store_threshold_limit(struct threshold_block *b, const char *buf, size_t count)
+store_threshold_limit(struct threshold_block *b, const char *buf, size_t size)
 {
        struct thresh_restart tr;
        unsigned long new;
-       char *end;
 
-       new = simple_strtoul(buf, &end, 0);
-       if (end == buf)
+       if (strict_strtoul(buf, 0, &new) < 0)
                return -EINVAL;
 
        if (new > THRESHOLD_MAX)
 
        smp_call_function_single(b->cpu, threshold_restart_bank, &tr, 1);
 
-       return end - buf;
+       return size;
 }
 
 struct threshold_block_cross_cpu {