regulator: Mark supply_name const and duplicate it as such
authorStephen Boyd <sboyd@codeaurora.org>
Fri, 17 Mar 2017 01:07:14 +0000 (18:07 -0700)
committerMark Brown <broonie@kernel.org>
Fri, 17 Mar 2017 13:12:22 +0000 (13:12 +0000)
The supply_name member of struct regulator can be const as we
don't change it in the regulator core. Furthermore, when we copy
the supply name we can use kstrdup_const() here to avoid a copy
if the name is in the ro data section.

Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/core.c
drivers/regulator/internal.h

index f20ad0a..49a0b6a 100644 (file)
@@ -1343,7 +1343,7 @@ static struct regulator *create_regulator(struct regulator_dev *rdev,
                        /* non-fatal */
                }
        } else {
-               regulator->supply_name = kstrdup(supply_name, GFP_KERNEL);
+               regulator->supply_name = kstrdup_const(supply_name, GFP_KERNEL);
                if (regulator->supply_name == NULL)
                        goto overflow_err;
        }
@@ -1799,7 +1799,7 @@ static void _regulator_put(struct regulator *regulator)
        put_device(&rdev->dev);
        mutex_unlock(&rdev->mutex);
 
-       kfree(regulator->supply_name);
+       kfree_const(regulator->supply_name);
        kfree(regulator);
 
        module_put(rdev->owner);
index 1dd575b..66a8ea0 100644 (file)
@@ -29,7 +29,7 @@ struct regulator {
        int uA_load;
        int min_uV;
        int max_uV;
-       char *supply_name;
+       const char *supply_name;
        struct device_attribute dev_attr;
        struct regulator_dev *rdev;
        struct dentry *debugfs;