mtd: nand: omap2: Don't call dma_release_channel() if dma_request_chan() failed
authorRoger Quadros <rogerq@ti.com>
Mon, 15 Aug 2016 07:47:39 +0000 (10:47 +0300)
committerBrian Norris <computersforpeace@gmail.com>
Mon, 29 Aug 2016 19:54:39 +0000 (12:54 -0700)
dma_request_chan() can fail returning an error pointer. In this case
prevent calling dma_release_channel() to prevent a ERR_PTR() dereference.

As error path can be called even with no DMA configuration, info->dma can
be NULL so don't call dma_release_channel() for that case either.

Fixes: de3bfc4a1616: ("mtd: nand: omap2: fix return value check in omap_nand_probe()")
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Roger Quadros <rogerq@ti.com>
Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
drivers/mtd/nand/omap2.c

index a59361c36f404ff08fa7bc314777203b7dc22a93..5513bfd9cdc90ed8e2628e311b7a92e02bfe0cd7 100644 (file)
@@ -2169,7 +2169,7 @@ scan_tail:
        return 0;
 
 return_error:
-       if (info->dma)
+       if (!IS_ERR_OR_NULL(info->dma))
                dma_release_channel(info->dma);
        if (nand_chip->ecc.priv) {
                nand_bch_free(nand_chip->ecc.priv);