OMAP: hsmmc: fix memory leak
The platform data allocated with kmalloc() will become unreachable once the init is complete, so it should be freed. The problem was discovered by kmemleak. Signed-off-by: Aaro Koskinen <aaro.koskinen@nokia.com> Acked-by: Adrian Hunter <adrian.hunter@nokia.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
This commit is contained in:
committed by
Tony Lindgren
parent
80e1e82398
commit
a6c7fdd293
@@ -408,6 +408,7 @@ void __init twl4030_mmc_init(struct twl4030_hsmmc_info *controllers)
|
|||||||
{
|
{
|
||||||
struct twl4030_hsmmc_info *c;
|
struct twl4030_hsmmc_info *c;
|
||||||
int nr_hsmmc = ARRAY_SIZE(hsmmc_data);
|
int nr_hsmmc = ARRAY_SIZE(hsmmc_data);
|
||||||
|
int i;
|
||||||
|
|
||||||
if (cpu_is_omap2430()) {
|
if (cpu_is_omap2430()) {
|
||||||
control_pbias_offset = OMAP243X_CONTROL_PBIAS_LITE;
|
control_pbias_offset = OMAP243X_CONTROL_PBIAS_LITE;
|
||||||
@@ -434,7 +435,7 @@ void __init twl4030_mmc_init(struct twl4030_hsmmc_info *controllers)
|
|||||||
mmc = kzalloc(sizeof(struct omap_mmc_platform_data), GFP_KERNEL);
|
mmc = kzalloc(sizeof(struct omap_mmc_platform_data), GFP_KERNEL);
|
||||||
if (!mmc) {
|
if (!mmc) {
|
||||||
pr_err("Cannot allocate memory for mmc device!\n");
|
pr_err("Cannot allocate memory for mmc device!\n");
|
||||||
return;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (c->name)
|
if (c->name)
|
||||||
@@ -532,6 +533,10 @@ void __init twl4030_mmc_init(struct twl4030_hsmmc_info *controllers)
|
|||||||
continue;
|
continue;
|
||||||
c->dev = mmc->dev;
|
c->dev = mmc->dev;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
done:
|
||||||
|
for (i = 0; i < nr_hsmmc; i++)
|
||||||
|
kfree(hsmmc_data[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user