static ssize_t foo_store(struct kobject *kobj, struct kobj_attribute *attr,
                         const char *buf, size_t count)
 {
-       sscanf(buf, "%du", &foo);
+       int ret;
+
+       ret = kstrtoint(buf, 10, &foo);
+       if (ret < 0)
+               return ret;
+
        return count;
 }
 
 static ssize_t b_store(struct kobject *kobj, struct kobj_attribute *attr,
                       const char *buf, size_t count)
 {
-       int var;
+       int var, ret;
+
+       ret = kstrtoint(buf, 10, &var);
+       if (ret < 0)
+               return ret;
 
-       sscanf(buf, "%du", &var);
        if (strcmp(attr->attr.name, "baz") == 0)
                baz = var;
        else
 
 static ssize_t foo_store(struct foo_obj *foo_obj, struct foo_attribute *attr,
                         const char *buf, size_t count)
 {
-       sscanf(buf, "%du", &foo_obj->foo);
+       int ret;
+
+       ret = kstrtoint(buf, 10, &foo_obj->foo);
+       if (ret < 0)
+               return ret;
+
        return count;
 }
 
 static ssize_t b_store(struct foo_obj *foo_obj, struct foo_attribute *attr,
                       const char *buf, size_t count)
 {
-       int var;
+       int var, ret;
+
+       ret = kstrtoint(buf, 10, &var);
+       if (ret < 0)
+               return ret;
 
-       sscanf(buf, "%du", &var);
        if (strcmp(attr->attr.name, "baz") == 0)
                foo_obj->baz = var;
        else