On Tue, Sep 23, 2014 at 03:50:06PM +0530, Pramod Gurav wrote: > This change takes care of releasing mmc resources on error cases in > probe function which was missing. Also release timer in remove function. > Acked-by: Ludovic Desroches <ludovic.desroches@xxxxxxxxx> > Cc: Ludovic Desroches <ludovic.desroches@xxxxxxxxx> > Cc: Chris Ball <chris@xxxxxxxxxx> > Cc: Ulf Hansson <ulf.hansson@xxxxxxxxxx> > Cc: linux-mmc@xxxxxxxxxxxxxxx > Signed-off-by: Pramod Gurav <pramod.gurav@xxxxxxxxxxxxxxx> > --- > Changes since v1: None > > drivers/mmc/host/atmel-mci.c | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/drivers/mmc/host/atmel-mci.c b/drivers/mmc/host/atmel-mci.c > index 36212fb..288bcc1 100644 > --- a/drivers/mmc/host/atmel-mci.c > +++ b/drivers/mmc/host/atmel-mci.c > @@ -2376,7 +2376,7 @@ static int __init atmci_probe(struct platform_device *pdev) > struct resource *regs; > unsigned int nr_slots; > int irq; > - int ret; > + int ret, i; > > regs = platform_get_resource(pdev, IORESOURCE_MEM, 0); > if (!regs) > @@ -2482,7 +2482,7 @@ static int __init atmci_probe(struct platform_device *pdev) > if (!host->buffer) { > ret = -ENOMEM; > dev_err(&pdev->dev, "buffer allocation failed\n"); > - goto err_init_slot; > + goto err_dma_alloc; > } > } > > @@ -2492,7 +2492,13 @@ static int __init atmci_probe(struct platform_device *pdev) > > return 0; > > +err_dma_alloc: > + for (i = 0; i < ATMCI_MAX_NR_SLOTS; i++) { > + if (host->slot[i]) > + atmci_cleanup_slot(host->slot[i], i); > + } > err_init_slot: > + del_timer_sync(&host->timer); > if (host->dma.chan) > dma_release_channel(host->dma.chan); > free_irq(irq, host); > @@ -2519,6 +2525,7 @@ static int __exit atmci_remove(struct platform_device *pdev) > atmci_readl(host, ATMCI_SR); > clk_disable_unprepare(host->mck); > > + del_timer_sync(&host->timer); > if (host->dma.chan) > dma_release_channel(host->dma.chan); > > -- > 1.7.9.5 > -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html