mmc: sdhci check parameters before call dma_free_coherent
authorPeng Fan <van.freenix@gmail.com>
Mon, 22 Jun 2015 03:41:23 +0000 (11:41 +0800)
committerUlf Hansson <ulf.hansson@linaro.org>
Fri, 24 Jul 2015 08:18:27 +0000 (10:18 +0200)
We should not call dma_free_coherent if host->adma_table is NULL,
otherwise may trigger panic.

Fixes: d1e49f77d7c7 ("mmc: sdhci: convert ADMA descriptors to a...")
Signed-off-by: Peng Fan <van.freenix@gmail.com>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/sdhci.c

index bc1445238fb3053b8d2a03a7bb35a25ddfff4b61..655900f552445db3b17cf96fa85e54c3dfb4c899 100644 (file)
@@ -2978,8 +2978,11 @@ int sdhci_add_host(struct sdhci_host *host)
                                                      GFP_KERNEL);
                host->align_buffer = kmalloc(host->align_buffer_sz, GFP_KERNEL);
                if (!host->adma_table || !host->align_buffer) {
-                       dma_free_coherent(mmc_dev(mmc), host->adma_table_sz,
-                                         host->adma_table, host->adma_addr);
+                       if (host->adma_table)
+                               dma_free_coherent(mmc_dev(mmc),
+                                                 host->adma_table_sz,
+                                                 host->adma_table,
+                                                 host->adma_addr);
                        kfree(host->align_buffer);
                        pr_warn("%s: Unable to allocate ADMA buffers - falling back to standard DMA\n",
                                mmc_hostname(mmc));