Skip to content

Commit

Permalink
block/rnbd: Use sysfs_emit instead of s*printf function for sysfs show
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Md Haris Iqbal authored and Jens Axboe committed Aug 2, 2021
1 parent 94dace8 commit 3087b33
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 25 deletions.
33 changes: 15 additions & 18 deletions drivers/block/rnbd/rnbd-clt-sysfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -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");
}
}

Expand All @@ -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 =
Expand All @@ -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 =
Expand All @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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 =
Expand Down Expand Up @@ -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);
}

Expand Down
14 changes: 7 additions & 7 deletions drivers/block/rnbd/rnbd-srv-sysfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 =
Expand All @@ -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 =
Expand All @@ -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 =
Expand All @@ -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,
Expand Down

0 comments on commit 3087b33

Please sign in to comment.