Skip to content

Commit 3087b33

Browse files
hiqbal-ionosaxboe
authored andcommitted
block/rnbd: Use sysfs_emit instead of s*printf function for sysfs show
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 <[email protected]> Signed-off-by: Jack Wang <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jens Axboe <[email protected]>
1 parent 94dace8 commit 3087b33

File tree

2 files changed

+22
-25
lines changed

2 files changed

+22
-25
lines changed

drivers/block/rnbd/rnbd-clt-sysfs.c

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -227,17 +227,17 @@ static ssize_t state_show(struct kobject *kobj,
227227

228228
switch (dev->dev_state) {
229229
case DEV_STATE_INIT:
230-
return snprintf(page, PAGE_SIZE, "init\n");
230+
return sysfs_emit(page, "init\n");
231231
case DEV_STATE_MAPPED:
232232
/* TODO fix cli tool before changing to proper state */
233-
return snprintf(page, PAGE_SIZE, "open\n");
233+
return sysfs_emit(page, "open\n");
234234
case DEV_STATE_MAPPED_DISCONNECTED:
235235
/* TODO fix cli tool before changing to proper state */
236-
return snprintf(page, PAGE_SIZE, "closed\n");
236+
return sysfs_emit(page, "closed\n");
237237
case DEV_STATE_UNMAPPED:
238-
return snprintf(page, PAGE_SIZE, "unmapped\n");
238+
return sysfs_emit(page, "unmapped\n");
239239
default:
240-
return snprintf(page, PAGE_SIZE, "unknown\n");
240+
return sysfs_emit(page, "unknown\n");
241241
}
242242
}
243243

@@ -263,7 +263,7 @@ static ssize_t mapping_path_show(struct kobject *kobj,
263263

264264
dev = container_of(kobj, struct rnbd_clt_dev, kobj);
265265

266-
return scnprintf(page, PAGE_SIZE, "%s\n", dev->pathname);
266+
return sysfs_emit(page, "%s\n", dev->pathname);
267267
}
268268

269269
static struct kobj_attribute rnbd_clt_mapping_path_attr =
@@ -276,8 +276,7 @@ static ssize_t access_mode_show(struct kobject *kobj,
276276

277277
dev = container_of(kobj, struct rnbd_clt_dev, kobj);
278278

279-
return snprintf(page, PAGE_SIZE, "%s\n",
280-
rnbd_access_mode_str(dev->access_mode));
279+
return sysfs_emit(page, "%s\n", rnbd_access_mode_str(dev->access_mode));
281280
}
282281

283282
static struct kobj_attribute rnbd_clt_access_mode =
@@ -286,8 +285,8 @@ static struct kobj_attribute rnbd_clt_access_mode =
286285
static ssize_t rnbd_clt_unmap_dev_show(struct kobject *kobj,
287286
struct kobj_attribute *attr, char *page)
288287
{
289-
return scnprintf(page, PAGE_SIZE, "Usage: echo <normal|force> > %s\n",
290-
attr->attr.name);
288+
return sysfs_emit(page, "Usage: echo <normal|force> > %s\n",
289+
attr->attr.name);
291290
}
292291

293292
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,
357356
struct kobj_attribute *attr,
358357
char *page)
359358
{
360-
return scnprintf(page, PAGE_SIZE,
361-
"Usage: echo <new size in sectors> > %s\n",
362-
attr->attr.name);
359+
return sysfs_emit(page, "Usage: echo <new size in sectors> > %s\n",
360+
attr->attr.name);
363361
}
364362

365363
static ssize_t rnbd_clt_resize_dev_store(struct kobject *kobj,
@@ -390,8 +388,7 @@ static struct kobj_attribute rnbd_clt_resize_dev_attr =
390388
static ssize_t rnbd_clt_remap_dev_show(struct kobject *kobj,
391389
struct kobj_attribute *attr, char *page)
392390
{
393-
return scnprintf(page, PAGE_SIZE, "Usage: echo <1> > %s\n",
394-
attr->attr.name);
391+
return sysfs_emit(page, "Usage: echo <1> > %s\n", attr->attr.name);
395392
}
396393

397394
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,
436433

437434
dev = container_of(kobj, struct rnbd_clt_dev, kobj);
438435

439-
return scnprintf(page, PAGE_SIZE, "%s\n", dev->sess->sessname);
436+
return sysfs_emit(page, "%s\n", dev->sess->sessname);
440437
}
441438

442439
static struct kobj_attribute rnbd_clt_session_attr =
@@ -499,8 +496,8 @@ static ssize_t rnbd_clt_map_device_show(struct kobject *kobj,
499496
struct kobj_attribute *attr,
500497
char *page)
501498
{
502-
return scnprintf(page, PAGE_SIZE,
503-
"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",
499+
return sysfs_emit(page,
500+
"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",
504501
attr->attr.name);
505502
}
506503

drivers/block/rnbd/rnbd-srv-sysfs.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ static ssize_t read_only_show(struct kobject *kobj, struct kobj_attribute *attr,
9090

9191
sess_dev = container_of(kobj, struct rnbd_srv_sess_dev, kobj);
9292

93-
return scnprintf(page, PAGE_SIZE, "%d\n",
94-
!(sess_dev->open_flags & FMODE_WRITE));
93+
return sysfs_emit(page, "%d\n",
94+
!(sess_dev->open_flags & FMODE_WRITE));
9595
}
9696

9797
static struct kobj_attribute rnbd_srv_dev_session_ro_attr =
@@ -105,8 +105,8 @@ static ssize_t access_mode_show(struct kobject *kobj,
105105

106106
sess_dev = container_of(kobj, struct rnbd_srv_sess_dev, kobj);
107107

108-
return scnprintf(page, PAGE_SIZE, "%s\n",
109-
rnbd_access_mode_str(sess_dev->access_mode));
108+
return sysfs_emit(page, "%s\n",
109+
rnbd_access_mode_str(sess_dev->access_mode));
110110
}
111111

112112
static struct kobj_attribute rnbd_srv_dev_session_access_mode_attr =
@@ -119,7 +119,7 @@ static ssize_t mapping_path_show(struct kobject *kobj,
119119

120120
sess_dev = container_of(kobj, struct rnbd_srv_sess_dev, kobj);
121121

122-
return scnprintf(page, PAGE_SIZE, "%s\n", sess_dev->pathname);
122+
return sysfs_emit(page, "%s\n", sess_dev->pathname);
123123
}
124124

125125
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 =
128128
static ssize_t rnbd_srv_dev_session_force_close_show(struct kobject *kobj,
129129
struct kobj_attribute *attr, char *page)
130130
{
131-
return scnprintf(page, PAGE_SIZE, "Usage: echo 1 > %s\n",
132-
attr->attr.name);
131+
return sysfs_emit(page, "Usage: echo 1 > %s\n",
132+
attr->attr.name);
133133
}
134134

135135
static ssize_t rnbd_srv_dev_session_force_close_store(struct kobject *kobj,

0 commit comments

Comments
 (0)