diff options
Diffstat (limited to 'arch/arm')
| -rw-r--r-- | arch/arm/mach-omap2/mmc-twl4030.c | 7 | 
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/arm/mach-omap2/mmc-twl4030.c b/arch/arm/mach-omap2/mmc-twl4030.c index 0c3c72d934bf..8afe9dd3f150 100644 --- a/arch/arm/mach-omap2/mmc-twl4030.c +++ b/arch/arm/mach-omap2/mmc-twl4030.c @@ -408,6 +408,7 @@ void __init twl4030_mmc_init(struct twl4030_hsmmc_info *controllers)  {  	struct twl4030_hsmmc_info *c;  	int nr_hsmmc = ARRAY_SIZE(hsmmc_data); +	int i;  	if (cpu_is_omap2430()) {  		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);  		if (!mmc) {  			pr_err("Cannot allocate memory for mmc device!\n"); -			return; +			goto done;  		}  		if (c->name) @@ -532,6 +533,10 @@ void __init twl4030_mmc_init(struct twl4030_hsmmc_info *controllers)  			continue;  		c->dev = mmc->dev;  	} + +done: +	for (i = 0; i < nr_hsmmc; i++) +		kfree(hsmmc_data[i]);  }  #endif  | 

