*id = 0;
        }
 
-       return kstrdup(name, GFP_KERNEL);
+       return devm_kstrdup(dev, name, GFP_KERNEL);
 }
 
 /*
                return NULL;
        }
 
-       return kstrdup(dai_drv->name, GFP_KERNEL);
+       return devm_kstrdup(dev, dai_drv->name, GFP_KERNEL);
 }
 
 /**
                dev_dbg(component->dev, "ASoC: Unregistered DAI '%s'\n",
                        dai->name);
                list_del(&dai->list);
-               kfree(dai->name);
-               kfree(dai);
        }
 }
 
 
        dev_dbg(dev, "ASoC: dynamically register DAI %s\n", dev_name(dev));
 
-       dai = kzalloc(sizeof(struct snd_soc_dai), GFP_KERNEL);
+       dai = devm_kzalloc(dev, sizeof(*dai), GFP_KERNEL);
        if (dai == NULL)
                return NULL;
 
                else
                        dai->id = component->num_dai;
        }
-       if (dai->name == NULL) {
-               kfree(dai);
+       if (!dai->name)
                return NULL;
-       }
 
        dai->component = component;
        dai->dev = dev;
 static void snd_soc_component_cleanup(struct snd_soc_component *component)
 {
        snd_soc_unregister_dais(component);
-       kfree(component->name);
 }
 
 static void snd_soc_component_del_unlocked(struct snd_soc_component *component)