OSDN Git Service

greybus: bundle: use kstrdup() for state file
authorAlex Elder <elder@linaro.org>
Fri, 17 Apr 2015 19:41:47 +0000 (14:41 -0500)
committerGreg Kroah-Hartman <gregkh@google.com>
Fri, 1 May 2015 14:41:11 +0000 (16:41 +0200)
The kernfs code guarantees we'll get a NUL-terminated buffer.
Use kstrdup() rather than kzalloc() + memcpy() in state_store()
making it slightly clearer what we're doing.  This has the added
benefit of guaranteeing that the stored string has no NUL character
inside it.

Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/bundle.c

index e7b2199..2047e17 100644 (file)
@@ -48,12 +48,10 @@ static ssize_t state_store(struct device *dev, struct device_attribute *attr,
        struct gb_bundle *bundle = to_gb_bundle(dev);
 
        kfree(bundle->state);
-       bundle->state = kzalloc(size + 1, GFP_KERNEL);
+       bundle->state = kstrdup(buf, GFP_KERNEL);
        if (!bundle->state)
                return -ENOMEM;
 
-       memcpy(bundle->state, buf, size);
-
        /* Tell userspace that the file contents changed */
        sysfs_notify(&bundle->dev.kobj, NULL, "state");