mmc: dw_mmc: prevent NULL dereference for dma_ops
authorJaehoon Chung <jh80.chung@samsung.com>
Wed, 18 Apr 2012 06:42:31 +0000 (15:42 +0900)
committerChris Ball <cjb@laptop.org>
Sat, 21 Apr 2012 01:52:05 +0000 (21:52 -0400)
Now, dma_ops is assumed that use the IDMAC.  But if dma_ops is assigned
the pdata->dma_ops, we didn't ensure that callback function is defined.

If the callback isn't defined, then we should run in PIO mode.

Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Acked-by: Will Newton <will.newton@imgtec.com>
Signed-off-by: Chris Ball <cjb@laptop.org>

drivers/mmc/host/dw_mmc.c

index f3b0fcd..ab3fc46 100644 (file)
@@ -1881,7 +1881,8 @@ static void dw_mci_init_dma(struct dw_mci *host)
        if (!host->dma_ops)
                goto no_dma;
 
-       if (host->dma_ops->init) {
+       if (host->dma_ops->init && host->dma_ops->start &&
+           host->dma_ops->stop && host->dma_ops->cleanup) {
                if (host->dma_ops->init(host)) {
                        dev_err(&host->dev, "%s: Unable to initialize "
                                "DMA Controller.\n", __func__);