const char *buf, size_t len)
 {
        unsigned int x;
+       int rc;
 
        if (!capable(CAP_SYS_ADMIN))
                return -EPERM;
-
-       x = simple_strtoul(buf, NULL, 0);
+       rc = kstrtouint(buf, 0, &x);
+       if (rc)
+               return rc;
 
        if (check_zero && !x)
                return -EINVAL;
 static ssize_t comm_nodeid_write(struct dlm_comm *cm, const char *buf,
                                 size_t len)
 {
-       cm->nodeid = simple_strtol(buf, NULL, 0);
+       int rc = kstrtoint(buf, 0, &cm->nodeid);
+
+       if (rc)
+               return rc;
        return len;
 }
 
 static ssize_t comm_local_write(struct dlm_comm *cm, const char *buf,
                                size_t len)
 {
-       cm->local= simple_strtol(buf, NULL, 0);
+       int rc = kstrtoint(buf, 0, &cm->local);
+
+       if (rc)
+               return rc;
        if (cm->local && !local_comm)
                local_comm = cm;
        return len;
                                 size_t len)
 {
        uint32_t seq = 0;
-       nd->nodeid = simple_strtol(buf, NULL, 0);
+       int rc = kstrtoint(buf, 0, &nd->nodeid);
+
+       if (rc)
+               return rc;
        dlm_comm_seq(nd->nodeid, &seq);
        nd->comm_seq = seq;
        return len;
 static ssize_t node_weight_write(struct dlm_node *nd, const char *buf,
                                 size_t len)
 {
-       nd->weight = simple_strtol(buf, NULL, 0);
+       int rc = kstrtoint(buf, 0, &nd->weight);
+
+       if (rc)
+               return rc;
        return len;
 }