Patch "crypto: ccp - Fix double add when creating new DMA command" has been added to the 4.9-stable tree
This is a note to let you know that I've just added the patch titled
crypto: ccp - Fix double add when creating new DMA command
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
crypto-ccp-fix-double-add-when-creating-new-dma-command.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
e5da5c5667381d2772374ee6a2967b3576c9483dMon Sep 17 00:00:00 2001
From: Gary R Hook <[email protected]>
Date: Fri, 27 Jan 2017 17:09:04 -0600
Subject: crypto: ccp - Fix double add when creating new DMA command
From: Gary R Hook <[email protected]>
commit e5da5c5667381d2772374ee6a2967b3576c9483d upstream.
Eliminate a double-add by creating a new list to manage command descriptors when created; move the descriptor to the pending list when the command is submitted.
--- drivers/crypto/ccp/ccp-dev.h | 1 + drivers/crypto/ccp/ccp-dmaengine.c | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-)
drivers/crypto/ccp/ccp-dev.h +1 -0
@@ -238,6 +238,7 @@ struct ccp_dma_chan {struct ccp_device *ccp;spinlock_t lock; +struct list_head created;struct list_head pending;struct list_head active;struct list_head complete;
drivers/crypto/ccp/ccp-dmaengine.c +5 -1
@@ -63,6 +63,7 @@ static void ccp_free_chan_resources(struccp_free_desc_resources (chan->ccp, &chan->complete);ccp_free_desc_resources (chan->ccp, &chan->active);ccp_free_desc_resources (chan->ccp, &chan->pending); +ccp_free_desc_resources (chan->ccp, &chan->created);spin_unlock_irqrestore (&chan->lock, flags); }
@@ -273,6 +274,7 @@ static dma_cookie_t ccp_tx_submit(structspin_lock_irqsave (&chan->lock, flags); cookie =dma_cookie_assign (tx_desc); +list_del (&desc->entry);list_add_tail (&desc->entry, &chan->pending);spin_unlock_irqrestore (&chan->lock, flags);
@@ -426,7 +428,7 @@ static struct ccp_dma_desc *ccp_create_dspin_lock_irqsave (&chan->lock, sflags); -list_add_tail (&desc->entry, &chan->pending); +list_add_tail (&desc->entry, &chan->created);spin_unlock_irqrestore (&chan->lock, sflags);
@@ -610,6 +612,7 @@ static int ccp_terminate_all(struct dma_/*TODO: Purge the complete list? */ ccp_free_desc_resources (chan->ccp, &chan->active);ccp_free_desc_resources (chan->ccp, &chan->pending); +ccp_free_desc_resources (chan->ccp, &chan->created);spin_unlock_irqrestore (&chan->lock, flags);
@@ -679,6 +682,7 @@ int ccp_dmaengine_register(struct ccp_de chan->ccp = ccp;spin_lock_init (&chan->lock); +INIT_LIST_HEAD (&chan->created);INIT_LIST_HEAD (&chan->pending);INIT_LIST_HEAD (&chan->active);INIT_LIST_HEAD (&chan->complete);
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/crypto-ccp-fix-double-add-when-creating-new-dma-command.patch queue-4.9/crypto-ccp-fix-dma-operations-when-iommu-is-enabled.patch