samples/kobject: Use sysfs_emit instead of sprintf
authorNguyen Dinh Phi <phind.uet@gmail.com>
Thu, 3 Mar 2022 18:36:18 +0000 (02:36 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 18 Mar 2022 13:28:29 +0000 (14:28 +0100)
sysfs_emit() is preferred over sprintf() when formatting the value to be
returned to user space in show() functions, because it knows about sysfs
buffer specifics and has sanity checks.

Signed-off-by: Nguyen Dinh Phi <phind.uet@gmail.com>
Link: https://lore.kernel.org/r/20220303183618.1342358-1-phind.uet@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
samples/kobject/kobject-example.c
samples/kobject/kset-example.c

index 9e383fdbaa00d2b55ff6f41773ce9b3df342e6cf..96678ed73216bc56de15184d3731c3d4f4f57b83 100644 (file)
@@ -28,7 +28,7 @@ static int bar;
 static ssize_t foo_show(struct kobject *kobj, struct kobj_attribute *attr,
                        char *buf)
 {
-       return sprintf(buf, "%d\n", foo);
+       return sysfs_emit(buf, "%d\n", foo);
 }
 
 static ssize_t foo_store(struct kobject *kobj, struct kobj_attribute *attr,
@@ -60,7 +60,7 @@ static ssize_t b_show(struct kobject *kobj, struct kobj_attribute *attr,
                var = baz;
        else
                var = bar;
-       return sprintf(buf, "%d\n", var);
+       return sysfs_emit(buf, "%d\n", var);
 }
 
 static ssize_t b_store(struct kobject *kobj, struct kobj_attribute *attr,
index c8010f126808b88c69b25911bece43b7b011a0d1..52f1acabd47911f09d67fd9b312e60ebdd494ef0 100644 (file)
@@ -112,7 +112,7 @@ static void foo_release(struct kobject *kobj)
 static ssize_t foo_show(struct foo_obj *foo_obj, struct foo_attribute *attr,
                        char *buf)
 {
-       return sprintf(buf, "%d\n", foo_obj->foo);
+       return sysfs_emit(buf, "%d\n", foo_obj->foo);
 }
 
 static ssize_t foo_store(struct foo_obj *foo_obj, struct foo_attribute *attr,
@@ -144,7 +144,7 @@ static ssize_t b_show(struct foo_obj *foo_obj, struct foo_attribute *attr,
                var = foo_obj->baz;
        else
                var = foo_obj->bar;
-       return sprintf(buf, "%d\n", var);
+       return sysfs_emit(buf, "%d\n", var);
 }
 
 static ssize_t b_store(struct foo_obj *foo_obj, struct foo_attribute *attr,