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 <[email protected]>

> Cc: Ludovic Desroches <[email protected]>
> Cc: Chris Ball <[email protected]>
> Cc: Ulf Hansson <[email protected]>
> Cc: [email protected]
> Signed-off-by: Pramod Gurav <[email protected]>
> ---
> 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-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to