Skip to content

Commit

Permalink
dmaengine: at_hdmac: add missing put_device() call in at_dma_xlate()
Browse files Browse the repository at this point in the history
If of_find_device_by_node() succeed, at_dma_xlate() doesn't have a
corresponding put_device(). Thus add put_device() to fix the exception
handling for this function implementation.

Fixes: bbe89c8 ("at_hdmac: move to generic DMA binding")
Signed-off-by: Yu Kuai <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Vinod Koul <[email protected]>
  • Loading branch information
Yu Kuai authored and vinodkoul committed Aug 19, 2020
1 parent 0cef8e2 commit 3832b78
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions drivers/dma/at_hdmac.c
Original file line number Diff line number Diff line change
Expand Up @@ -1657,8 +1657,10 @@ static struct dma_chan *at_dma_xlate(struct of_phandle_args *dma_spec,
dma_cap_set(DMA_SLAVE, mask);

atslave = kmalloc(sizeof(*atslave), GFP_KERNEL);
if (!atslave)
if (!atslave) {
put_device(&dmac_pdev->dev);
return NULL;
}

atslave->cfg = ATC_DST_H2SEL_HW | ATC_SRC_H2SEL_HW;
/*
Expand Down Expand Up @@ -1687,8 +1689,10 @@ static struct dma_chan *at_dma_xlate(struct of_phandle_args *dma_spec,
atslave->dma_dev = &dmac_pdev->dev;

chan = dma_request_channel(mask, at_dma_filter, atslave);
if (!chan)
if (!chan) {
put_device(&dmac_pdev->dev);
return NULL;
}

atchan = to_at_dma_chan(chan);
atchan->per_if = dma_spec->args[0] & 0xff;
Expand Down

0 comments on commit 3832b78

Please sign in to comment.