diff options
author | Gary R Hook <gary.hook@amd.com> | 2017-02-09 16:49:57 -0500 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2017-02-15 00:23:34 -0500 |
commit | 4cdf101ef444e47bc8869ef3e90396e828fd9b61 (patch) | |
tree | dbea4b6ab8c2f394e1299e06b49bd32caa285c29 /drivers/crypto/ccp/ccp-dev-v5.c | |
parent | a60496a0ca0d34a3ae92e426138eab35f0f45612 (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.c | 7 |
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 | ||
266 | static int ccp5_perform_aes(struct ccp_op *op) | 269 | static int ccp5_perform_aes(struct ccp_op *op) |