Commit 792732d9 authored by Geliang Tang's avatar Geliang Tang Committed by Jens Axboe

bcache: use kmemdup_nul for CACHED_LABEL buffer

This patch uses kmemdup_nul to create a NUL-terminated string from
dc->sb.label. This is better than open coding it.

With this, we can move env[2] initialization into env[] array to make
code more elegant.
Signed-off-by: default avatarGeliang Tang <geliangtang@gmail.com>
Signed-off-by: default avatarColy Li <colyli@suse.de>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 78d4eb8a
...@@ -906,21 +906,18 @@ static int cached_dev_status_update(void *arg) ...@@ -906,21 +906,18 @@ static int cached_dev_status_update(void *arg)
void bch_cached_dev_run(struct cached_dev *dc) void bch_cached_dev_run(struct cached_dev *dc)
{ {
struct bcache_device *d = &dc->disk; struct bcache_device *d = &dc->disk;
char buf[SB_LABEL_SIZE + 1]; char *buf = kmemdup_nul(dc->sb.label, SB_LABEL_SIZE, GFP_KERNEL);
char *env[] = { char *env[] = {
"DRIVER=bcache", "DRIVER=bcache",
kasprintf(GFP_KERNEL, "CACHED_UUID=%pU", dc->sb.uuid), kasprintf(GFP_KERNEL, "CACHED_UUID=%pU", dc->sb.uuid),
NULL, kasprintf(GFP_KERNEL, "CACHED_LABEL=%s", buf ? : ""),
NULL, NULL,
}; };
memcpy(buf, dc->sb.label, SB_LABEL_SIZE);
buf[SB_LABEL_SIZE] = '\0';
env[2] = kasprintf(GFP_KERNEL, "CACHED_LABEL=%s", buf);
if (atomic_xchg(&dc->running, 1)) { if (atomic_xchg(&dc->running, 1)) {
kfree(env[1]); kfree(env[1]);
kfree(env[2]); kfree(env[2]);
kfree(buf);
return; return;
} }
...@@ -944,6 +941,7 @@ void bch_cached_dev_run(struct cached_dev *dc) ...@@ -944,6 +941,7 @@ void bch_cached_dev_run(struct cached_dev *dc)
kobject_uevent_env(&disk_to_dev(d->disk)->kobj, KOBJ_CHANGE, env); kobject_uevent_env(&disk_to_dev(d->disk)->kobj, KOBJ_CHANGE, env);
kfree(env[1]); kfree(env[1]);
kfree(env[2]); kfree(env[2]);
kfree(buf);
if (sysfs_create_link(&d->kobj, &disk_to_dev(d->disk)->kobj, "dev") || if (sysfs_create_link(&d->kobj, &disk_to_dev(d->disk)->kobj, "dev") ||
sysfs_create_link(&disk_to_dev(d->disk)->kobj, &d->kobj, "bcache")) sysfs_create_link(&disk_to_dev(d->disk)->kobj, &d->kobj, "bcache"))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment