ARM: PL08x: fix a leak when preparing TXDs
If we fail to allocate the LLI, the prep_* function will return NULL. However, the TXD we allocated will not be placed on any list, nor will it be freed - we'll just drop all references to it. Make sure we free it rather than leaking TXDs. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
parent
bf072af461
commit
dafa73171b
|
@ -1332,9 +1332,10 @@ static int pl08x_prep_channel_resources(struct pl08x_dma_chan *plchan,
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
num_llis = pl08x_fill_llis_for_desc(pl08x, txd);
|
num_llis = pl08x_fill_llis_for_desc(pl08x, txd);
|
||||||
|
if (!num_llis) {
|
||||||
if (!num_llis)
|
kfree(txd);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
spin_lock_irqsave(&plchan->lock, plchan->lockflags);
|
spin_lock_irqsave(&plchan->lock, plchan->lockflags);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue