aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/crypto/ccp/ccp-dev-v5.c
diff options
context:
space:
mode:
authorGary R Hook <gary.hook@amd.com>2017-02-09 16:49:57 -0500
committerHerbert Xu <herbert@gondor.apana.org.au>2017-02-15 00:23:34 -0500
commit4cdf101ef444e47bc8869ef3e90396e828fd9b61 (patch)
treedbea4b6ab8c2f394e1299e06b49bd32caa285c29 /drivers/crypto/ccp/ccp-dev-v5.c
parenta60496a0ca0d34a3ae92e426138eab35f0f45612 (diff)
crypto: ccp - Update the command queue on errors
Move the command queue tail pointer when an error is detected. Always return the error. Signed-off-by: Gary R Hook <gary.hook@amd.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/crypto/ccp/ccp-dev-v5.c')
-rw-r--r--drivers/crypto/ccp/ccp-dev-v5.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/crypto/ccp/ccp-dev-v5.c b/drivers/crypto/ccp/ccp-dev-v5.c
index e0dfb6a05c48..41cc853f8569 100644
--- a/drivers/crypto/ccp/ccp-dev-v5.c
+++ b/drivers/crypto/ccp/ccp-dev-v5.c
@@ -250,17 +250,20 @@ static int ccp5_do_cmd(struct ccp5_desc *desc,
250 ret = wait_event_interruptible(cmd_q->int_queue, 250 ret = wait_event_interruptible(cmd_q->int_queue,
251 cmd_q->int_rcvd); 251 cmd_q->int_rcvd);
252 if (ret || cmd_q->cmd_error) { 252 if (ret || cmd_q->cmd_error) {
253 /* Log the error and flush the queue by
254 * moving the head pointer
255 */
253 if (cmd_q->cmd_error) 256 if (cmd_q->cmd_error)
254 ccp_log_error(cmd_q->ccp, 257 ccp_log_error(cmd_q->ccp,
255 cmd_q->cmd_error); 258 cmd_q->cmd_error);
256 /* A version 5 device doesn't use Job IDs... */ 259 iowrite32(tail, cmd_q->reg_head_lo);
257 if (!ret) 260 if (!ret)
258 ret = -EIO; 261 ret = -EIO;
259 } 262 }
260 cmd_q->int_rcvd = 0; 263 cmd_q->int_rcvd = 0;
261 } 264 }
262 265
263 return 0; 266 return ret;
264} 267}
265 268
266static int ccp5_perform_aes(struct ccp_op *op) 269static int ccp5_perform_aes(struct ccp_op *op)