diff options
Diffstat (limited to 'drivers/dma/edma.c')
| -rw-r--r-- | drivers/dma/edma.c | 2 | 
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/dma/edma.c b/drivers/dma/edma.c index 3519111c566b..10b577fcf48d 100644 --- a/drivers/dma/edma.c +++ b/drivers/dma/edma.c @@ -305,6 +305,7 @@ static struct dma_async_tx_descriptor *edma_prep_slave_sg(  				edma_alloc_slot(EDMA_CTLR(echan->ch_num),  						EDMA_SLOT_ANY);  			if (echan->slot[i] < 0) { +				kfree(edesc);  				dev_err(dev, "Failed to allocate slot\n");  				kfree(edesc);  				return NULL; @@ -346,6 +347,7 @@ static struct dma_async_tx_descriptor *edma_prep_slave_sg(  			ccnt = sg_dma_len(sg) / (acnt * bcnt);  			if (ccnt > (SZ_64K - 1)) {  				dev_err(dev, "Exceeded max SG segment size\n"); +				kfree(edesc);  				return NULL;  			}  			cidx = acnt * bcnt;  | 
