goto fail_out;
        }
 
-       clk->name = kstrdup(hw->init->name, GFP_KERNEL);
+       clk->name = kstrdup_const(hw->init->name, GFP_KERNEL);
        if (!clk->name) {
                pr_err("%s: could not allocate clk->name\n", __func__);
                ret = -ENOMEM;
 
        /* copy each string name in case parent_names is __initdata */
        for (i = 0; i < clk->num_parents; i++) {
-               clk->parent_names[i] = kstrdup(hw->init->parent_names[i],
+               clk->parent_names[i] = kstrdup_const(hw->init->parent_names[i],
                                                GFP_KERNEL);
                if (!clk->parent_names[i]) {
                        pr_err("%s: could not copy parent_names\n", __func__);
 
 fail_parent_names_copy:
        while (--i >= 0)
-               kfree(clk->parent_names[i]);
+               kfree_const(clk->parent_names[i]);
        kfree(clk->parent_names);
 fail_parent_names:
-       kfree(clk->name);
+       kfree_const(clk->name);
 fail_name:
        kfree(clk);
 fail_out:
 
        kfree(clk->parents);
        while (--i >= 0)
-               kfree(clk->parent_names[i]);
+               kfree_const(clk->parent_names[i]);
 
        kfree(clk->parent_names);
-       kfree(clk->name);
+       kfree_const(clk->name);
        kfree(clk);
 }