Commit 1e3b2e80 authored by Thomas Bourgoin's avatar Thomas Bourgoin Committed by Herbert Xu

crypto: stm32 - remove flag HASH_FLAGS_DMA_READY

Remove flag HASH_FLAGS_DMA_READY as it can put the driver in a deadlock
state.
If the DMA automatically set the DCAL bit, the interrupt indicating the
end of a computation can be raised before the DMA complete sequence.
Signed-off-by: default avatarThomas Bourgoin <thomas.bourgoin@foss.st.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent a4adfbc2
...@@ -84,12 +84,11 @@ ...@@ -84,12 +84,11 @@
#define HASH_FLAGS_INIT BIT(0) #define HASH_FLAGS_INIT BIT(0)
#define HASH_FLAGS_OUTPUT_READY BIT(1) #define HASH_FLAGS_OUTPUT_READY BIT(1)
#define HASH_FLAGS_CPU BIT(2) #define HASH_FLAGS_CPU BIT(2)
#define HASH_FLAGS_DMA_READY BIT(3) #define HASH_FLAGS_DMA_ACTIVE BIT(3)
#define HASH_FLAGS_DMA_ACTIVE BIT(4) #define HASH_FLAGS_HMAC_INIT BIT(4)
#define HASH_FLAGS_HMAC_INIT BIT(5) #define HASH_FLAGS_HMAC_FINAL BIT(5)
#define HASH_FLAGS_HMAC_FINAL BIT(6) #define HASH_FLAGS_HMAC_KEY BIT(6)
#define HASH_FLAGS_HMAC_KEY BIT(7) #define HASH_FLAGS_SHA3_MODE BIT(7)
#define HASH_FLAGS_SHA3_MODE BIT(8)
#define HASH_FLAGS_FINAL BIT(15) #define HASH_FLAGS_FINAL BIT(15)
#define HASH_FLAGS_FINUP BIT(16) #define HASH_FLAGS_FINUP BIT(16)
#define HASH_FLAGS_ALGO_MASK GENMASK(20, 17) #define HASH_FLAGS_ALGO_MASK GENMASK(20, 17)
...@@ -585,8 +584,6 @@ static void stm32_hash_dma_callback(void *param) ...@@ -585,8 +584,6 @@ static void stm32_hash_dma_callback(void *param)
struct stm32_hash_dev *hdev = param; struct stm32_hash_dev *hdev = param;
complete(&hdev->dma_completion); complete(&hdev->dma_completion);
hdev->flags |= HASH_FLAGS_DMA_READY;
} }
static int stm32_hash_hmac_dma_send(struct stm32_hash_dev *hdev) static int stm32_hash_hmac_dma_send(struct stm32_hash_dev *hdev)
...@@ -1241,11 +1238,9 @@ static irqreturn_t stm32_hash_irq_thread(int irq, void *dev_id) ...@@ -1241,11 +1238,9 @@ static irqreturn_t stm32_hash_irq_thread(int irq, void *dev_id)
hdev->flags &= ~HASH_FLAGS_OUTPUT_READY; hdev->flags &= ~HASH_FLAGS_OUTPUT_READY;
goto finish; goto finish;
} }
} else if (HASH_FLAGS_DMA_READY & hdev->flags) { } else if (HASH_FLAGS_DMA_ACTIVE & hdev->flags) {
if (HASH_FLAGS_DMA_ACTIVE & hdev->flags) { hdev->flags &= ~HASH_FLAGS_DMA_ACTIVE;
hdev->flags &= ~HASH_FLAGS_DMA_ACTIVE; goto finish;
goto finish;
}
} }
return IRQ_HANDLED; return IRQ_HANDLED;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment