ARM: 7464/1: mmc: omap_hsmmc: ensure probe returns error if DMA channel request fails
authorKevin Hilman <khilman@deeprootsystems.com>
Wed, 11 Jul 2012 16:51:40 +0000 (17:51 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Tue, 31 Jul 2012 11:06:26 +0000 (12:06 +0100)
If dma_request_channel() fails (e.g. because DMA enine is not built
into the kernel), the return value from probe is zero causing the
driver to be bound to the device even though probe failed.

To fix, ensure that probe returns an error value when a DMA channel
request fail.

Signed-off-by: Kevin Hilman <khilman@ti.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
drivers/mmc/host/omap_hsmmc.c

index 2338703746a492df3230ca4a7efe674cecf0150d..823d21cb87c01cf9673d90f682479fd234470cb3 100644 (file)
@@ -1924,12 +1924,14 @@ static int __devinit omap_hsmmc_probe(struct platform_device *pdev)
        host->rx_chan = dma_request_channel(mask, omap_dma_filter_fn, &rx_req);
        if (!host->rx_chan) {
                dev_err(mmc_dev(host->mmc), "unable to obtain RX DMA engine channel %u\n", rx_req);
+               ret = -ENXIO;
                goto err_irq;
        }
 
        host->tx_chan = dma_request_channel(mask, omap_dma_filter_fn, &tx_req);
        if (!host->tx_chan) {
                dev_err(mmc_dev(host->mmc), "unable to obtain TX DMA engine channel %u\n", tx_req);
+               ret = -ENXIO;
                goto err_irq;
        }
 
This page took 0.028806 seconds and 5 git commands to generate.