Browse Source

Merge tag 'dmaengine-fix-4.2-rc8' of git://git.infradead.org/users/vkoul/slave-dma

Pull dmaengine fix from Vinod Koul:
 "We recently found issue with dma_request_slave_channel() API causing
  privatecnt value to go bad.  This is fixed by balancing the privatecnt"

* tag 'dmaengine-fix-4.2-rc8' of git://git.infradead.org/users/vkoul/slave-dma:
  dmaengine: fix balance of privatecnt inc/dec operations
Linus Torvalds 10 years ago
parent
commit
1b647a166f
1 changed files with 4 additions and 0 deletions
  1. 4 0
      drivers/dma/dmaengine.c

+ 4 - 0
drivers/dma/dmaengine.c

@@ -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);