Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 05aa1a77 authored by Robert Baldyga's avatar Robert Baldyga Committed by Vinod Koul
Browse files

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: default avatarKrzysztof Kozlowski <k.kozlowski@samsung.com>
Signed-off-by: default avatarRobert Baldyga <r.baldyga@samsung.com>
Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
parent 2c6625cd
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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);
	if (IS_ERR(ch))
		return NULL;

	dma_cap_set(DMA_PRIVATE, ch->device->cap_mask);
	ch->device->privatecnt++;

	return ch;
}
EXPORT_SYMBOL_GPL(dma_request_slave_channel);