block/rnbd: Use sysfs_emit instead of s*printf function for sysfs show
authorMd Haris Iqbal <haris.iqbal@ionos.com>
Mon, 26 Jul 2021 11:59:50 +0000 (13:59 +0200)
committerJens Axboe <axboe@kernel.dk>
Mon, 2 Aug 2021 19:37:40 +0000 (13:37 -0600)
sysfs_emit function was added to be aware of the PAGE_SIZE maximum of
the temporary buffer used for outputting sysfs content, so there is no
possible overruns. So replace the uses of any s*printf functions for
the sysfs show functions with sysfs_emit.

Signed-off-by: Md Haris Iqbal <haris.iqbal@ionos.com>
Signed-off-by: Jack Wang <jinpu.wang@ionos.com>
Link: https://lore.kernel.org/r/20210726115950.470543-3-jinpu.wang@ionos.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/rnbd/rnbd-clt-sysfs.c
drivers/block/rnbd/rnbd-srv-sysfs.c

index 324afdd..4b93fd8 100644 (file)
@@ -227,17 +227,17 @@ static ssize_t state_show(struct kobject *kobj,
 
        switch (dev->dev_state) {
        case DEV_STATE_INIT:
-               return snprintf(page, PAGE_SIZE, "init\n");
+               return sysfs_emit(page, "init\n");
        case DEV_STATE_MAPPED:
                /* TODO fix cli tool before changing to proper state */
-               return snprintf(page, PAGE_SIZE, "open\n");
+               return sysfs_emit(page, "open\n");
        case DEV_STATE_MAPPED_DISCONNECTED:
                /* TODO fix cli tool before changing to proper state */
-               return snprintf(page, PAGE_SIZE, "closed\n");
+               return sysfs_emit(page, "closed\n");
        case DEV_STATE_UNMAPPED:
-               return snprintf(page, PAGE_SIZE, "unmapped\n");
+               return sysfs_emit(page, "unmapped\n");
        default:
-               return snprintf(page, PAGE_SIZE, "unknown\n");
+               return sysfs_emit(page, "unknown\n");
        }
 }
 
@@ -263,7 +263,7 @@ static ssize_t mapping_path_show(struct kobject *kobj,
 
        dev = container_of(kobj, struct rnbd_clt_dev, kobj);
 
-       return scnprintf(page, PAGE_SIZE, "%s\n", dev->pathname);
+       return sysfs_emit(page, "%s\n", dev->pathname);
 }
 
 static struct kobj_attribute rnbd_clt_mapping_path_attr =
@@ -276,8 +276,7 @@ static ssize_t access_mode_show(struct kobject *kobj,
 
        dev = container_of(kobj, struct rnbd_clt_dev, kobj);
 
-       return snprintf(page, PAGE_SIZE, "%s\n",
-                       rnbd_access_mode_str(dev->access_mode));
+       return sysfs_emit(page, "%s\n", rnbd_access_mode_str(dev->access_mode));
 }
 
 static struct kobj_attribute rnbd_clt_access_mode =
@@ -286,8 +285,8 @@ static struct kobj_attribute rnbd_clt_access_mode =
 static ssize_t rnbd_clt_unmap_dev_show(struct kobject *kobj,
                                        struct kobj_attribute *attr, char *page)
 {
-       return scnprintf(page, PAGE_SIZE, "Usage: echo <normal|force> > %s\n",
-                        attr->attr.name);
+       return sysfs_emit(page, "Usage: echo <normal|force> > %s\n",
+                         attr->attr.name);
 }
 
 static ssize_t rnbd_clt_unmap_dev_store(struct kobject *kobj,
@@ -357,9 +356,8 @@ static ssize_t rnbd_clt_resize_dev_show(struct kobject *kobj,
                                         struct kobj_attribute *attr,
                                         char *page)
 {
-       return scnprintf(page, PAGE_SIZE,
-                        "Usage: echo <new size in sectors> > %s\n",
-                        attr->attr.name);
+       return sysfs_emit(page, "Usage: echo <new size in sectors> > %s\n",
+                         attr->attr.name);
 }
 
 static ssize_t rnbd_clt_resize_dev_store(struct kobject *kobj,
@@ -390,8 +388,7 @@ static struct kobj_attribute rnbd_clt_resize_dev_attr =
 static ssize_t rnbd_clt_remap_dev_show(struct kobject *kobj,
                                        struct kobj_attribute *attr, char *page)
 {
-       return scnprintf(page, PAGE_SIZE, "Usage: echo <1> > %s\n",
-                        attr->attr.name);
+       return sysfs_emit(page, "Usage: echo <1> > %s\n", attr->attr.name);
 }
 
 static ssize_t rnbd_clt_remap_dev_store(struct kobject *kobj,
@@ -436,7 +433,7 @@ static ssize_t session_show(struct kobject *kobj, struct kobj_attribute *attr,
 
        dev = container_of(kobj, struct rnbd_clt_dev, kobj);
 
-       return scnprintf(page, PAGE_SIZE, "%s\n", dev->sess->sessname);
+       return sysfs_emit(page, "%s\n", dev->sess->sessname);
 }
 
 static struct kobj_attribute rnbd_clt_session_attr =
@@ -499,8 +496,8 @@ static ssize_t rnbd_clt_map_device_show(struct kobject *kobj,
                                         struct kobj_attribute *attr,
                                         char *page)
 {
-       return scnprintf(page, PAGE_SIZE,
-                        "Usage: echo \"[dest_port=server port number] sessname=<name of the rtrs session> path=<[srcaddr@]dstaddr> [path=<[srcaddr@]dstaddr>] device_path=<full path on remote side> [access_mode=<ro|rw|migration>] [nr_poll_queues=<number of queues>]\" > %s\n\naddr ::= [ ip:<ipv4> | ip:<ipv6> | gid:<gid> ]\n",
+       return sysfs_emit(page,
+                         "Usage: echo \"[dest_port=server port number] sessname=<name of the rtrs session> path=<[srcaddr@]dstaddr> [path=<[srcaddr@]dstaddr>] device_path=<full path on remote side> [access_mode=<ro|rw|migration>] [nr_poll_queues=<number of queues>]\" > %s\n\naddr ::= [ ip:<ipv4> | ip:<ipv6> | gid:<gid> ]\n",
                         attr->attr.name);
 }
 
index acf5fce..4db98e0 100644 (file)
@@ -90,8 +90,8 @@ static ssize_t read_only_show(struct kobject *kobj, struct kobj_attribute *attr,
 
        sess_dev = container_of(kobj, struct rnbd_srv_sess_dev, kobj);
 
-       return scnprintf(page, PAGE_SIZE, "%d\n",
-                        !(sess_dev->open_flags & FMODE_WRITE));
+       return sysfs_emit(page, "%d\n",
+                         !(sess_dev->open_flags & FMODE_WRITE));
 }
 
 static struct kobj_attribute rnbd_srv_dev_session_ro_attr =
@@ -105,8 +105,8 @@ static ssize_t access_mode_show(struct kobject *kobj,
 
        sess_dev = container_of(kobj, struct rnbd_srv_sess_dev, kobj);
 
-       return scnprintf(page, PAGE_SIZE, "%s\n",
-                        rnbd_access_mode_str(sess_dev->access_mode));
+       return sysfs_emit(page, "%s\n",
+                         rnbd_access_mode_str(sess_dev->access_mode));
 }
 
 static struct kobj_attribute rnbd_srv_dev_session_access_mode_attr =
@@ -119,7 +119,7 @@ static ssize_t mapping_path_show(struct kobject *kobj,
 
        sess_dev = container_of(kobj, struct rnbd_srv_sess_dev, kobj);
 
-       return scnprintf(page, PAGE_SIZE, "%s\n", sess_dev->pathname);
+       return sysfs_emit(page, "%s\n", sess_dev->pathname);
 }
 
 static struct kobj_attribute rnbd_srv_dev_session_mapping_path_attr =
@@ -128,8 +128,8 @@ static struct kobj_attribute rnbd_srv_dev_session_mapping_path_attr =
 static ssize_t rnbd_srv_dev_session_force_close_show(struct kobject *kobj,
                                        struct kobj_attribute *attr, char *page)
 {
-       return scnprintf(page, PAGE_SIZE, "Usage: echo 1 > %s\n",
-                        attr->attr.name);
+       return sysfs_emit(page, "Usage: echo 1 > %s\n",
+                         attr->attr.name);
 }
 
 static ssize_t rnbd_srv_dev_session_force_close_store(struct kobject *kobj,