Message ID | 1471247259-27107-1-git-send-email-rogerq@ti.com |
---|---|
State | Accepted |
Commit | a93295a7e118b5c58391906e47183775b1eb7cb1 |
Headers | show |
On Mon, 15 Aug 2016 10:47:39 +0300 Roger Quadros <rogerq@ti.com> wrote: > 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> Brian, can you apply this fix directly? > --- > drivers/mtd/nand/omap2.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/mtd/nand/omap2.c b/drivers/mtd/nand/omap2.c > index a59361c..5513bfd9 100644 > --- a/drivers/mtd/nand/omap2.c > +++ b/drivers/mtd/nand/omap2.c > @@ -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);
On Mon, Aug 15, 2016 at 05:22:00PM +0200, Boris Brezillon wrote: > On Mon, 15 Aug 2016 10:47:39 +0300 > Roger Quadros <rogerq@ti.com> wrote: > > > 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> > > Brian, can you apply this fix directly? Applied to linux-mtd.git
diff --git a/drivers/mtd/nand/omap2.c b/drivers/mtd/nand/omap2.c index a59361c..5513bfd9 100644 --- a/drivers/mtd/nand/omap2.c +++ b/drivers/mtd/nand/omap2.c @@ -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);
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> --- drivers/mtd/nand/omap2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)