|
@@ -250,17 +250,20 @@ static int ccp5_do_cmd(struct ccp5_desc *desc,
|
|
|
ret = wait_event_interruptible(cmd_q->int_queue,
|
|
|
cmd_q->int_rcvd);
|
|
|
if (ret || cmd_q->cmd_error) {
|
|
|
+ /* Log the error and flush the queue by
|
|
|
+ * moving the head pointer
|
|
|
+ */
|
|
|
if (cmd_q->cmd_error)
|
|
|
ccp_log_error(cmd_q->ccp,
|
|
|
cmd_q->cmd_error);
|
|
|
- /* A version 5 device doesn't use Job IDs... */
|
|
|
+ iowrite32(tail, cmd_q->reg_head_lo);
|
|
|
if (!ret)
|
|
|
ret = -EIO;
|
|
|
}
|
|
|
cmd_q->int_rcvd = 0;
|
|
|
}
|
|
|
|
|
|
- return 0;
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
static int ccp5_perform_aes(struct ccp_op *op)
|