dmaengine: fix balance of privatecnt inc/dec operations
This patch increments privatecnt value and set DMA_PRIVATE in device caps in dma_request_slave_channel() function. This is needed to keep privatecnt increment/decrement balance. As function dma_release_channel() decrements privatecnt counter, we need to increment it when channel is requested. Otherwise privatecnt drops into negatives after few dma_release_channel() calls. Reported-by: Krzysztof Kozlowski <k.kozlowski@samsung.com> Signed-off-by: Robert Baldyga <r.baldyga@samsung.com> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
This commit is contained in:
parent
2c6625cd54
commit
05aa1a77dc
|
@ -689,6 +689,10 @@ struct dma_chan *dma_request_slave_channel(struct device *dev,
|
||||||
struct dma_chan *ch = dma_request_slave_channel_reason(dev, name);
|
struct dma_chan *ch = dma_request_slave_channel_reason(dev, name);
|
||||||
if (IS_ERR(ch))
|
if (IS_ERR(ch))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
dma_cap_set(DMA_PRIVATE, ch->device->cap_mask);
|
||||||
|
ch->device->privatecnt++;
|
||||||
|
|
||||||
return ch;
|
return ch;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(dma_request_slave_channel);
|
EXPORT_SYMBOL_GPL(dma_request_slave_channel);
|
||||||
|
|
Loading…
Reference in New Issue