> -----Original Message----- > From: dmaengine-owner@xxxxxxxxxxxxxxx <dmaengine- > owner@xxxxxxxxxxxxxxx> On Behalf Of Alexander.Barabash@xxxxxxxx > Sent: Wednesday, December 25, 2019 10:56 AM > To: dmaengine@xxxxxxxxxxxxxxx > Cc: alexander.barabash@xxxxxxxxx > Subject: [PATCH v2] ioat: ioat_alloc_ring() failure handling. > > If dma_alloc_coherent() returns NULL in ioat_alloc_ring(), ring allocation > must not proceed. > > Until now, if the first call to dma_alloc_coherent() in > ioat_alloc_ring() returned NULL, the processing could proceed, failing with > NULL-pointer dereferencing further down the line. > > Signed-off-by: Alexander Barabash <alexander.barabash@xxxxxxxx> Acked-by: Dave Jiang <dave.jiang@xxxxxxxxx> > --- > drivers/dma/ioat/dma.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/dma/ioat/dma.c b/drivers/dma/ioat/dma.c index > 1a422a8..18c011e 100644 > --- a/drivers/dma/ioat/dma.c > +++ b/drivers/dma/ioat/dma.c > @@ -377,10 +377,11 @@ struct ioat_ring_ent ** > > descs->virt = dma_alloc_coherent(to_dev(ioat_chan), > SZ_2M, &descs->hw, flags); > - if (!descs->virt && (i > 0)) { > + if (!descs->virt) { > int idx; > > for (idx = 0; idx < i; idx++) { > + descs = &ioat_chan->descs[idx]; > dma_free_coherent(to_dev(ioat_chan), > SZ_2M, > descs->virt, descs->hw); > descs->virt = NULL; > -- > 1.8.3.1