Skip to content

Commit b7b39df

Browse files
committed
crypto: caam/qi - Fix drv_ctx refcount bug
Ensure refcount is raised before request is enqueued since it could be dequeued before the call returns. Reported-by: Sean Anderson <[email protected]> Cc: <[email protected]> Fixes: 1114441 ("crypto: caam/qi - optimize frame queue cleanup") Signed-off-by: Herbert Xu <[email protected]> Reviewed-by: Horia Geantă <[email protected]> Tested-by: Sean Anderson <[email protected]> Signed-off-by: Herbert Xu <[email protected]>
1 parent cfb32c6 commit b7b39df

File tree

1 file changed

+3
-3
lines changed
  • drivers/crypto/caam

1 file changed

+3
-3
lines changed

drivers/crypto/caam/qi.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,12 +122,12 @@ int caam_qi_enqueue(struct device *qidev, struct caam_drv_req *req)
122122
qm_fd_addr_set64(&fd, addr);
123123

124124
do {
125+
refcount_inc(&req->drv_ctx->refcnt);
125126
ret = qman_enqueue(req->drv_ctx->req_fq, &fd);
126-
if (likely(!ret)) {
127-
refcount_inc(&req->drv_ctx->refcnt);
127+
if (likely(!ret))
128128
return 0;
129-
}
130129

130+
refcount_dec(&req->drv_ctx->refcnt);
131131
if (ret != -EBUSY)
132132
break;
133133
num_retries++;

0 commit comments

Comments
 (0)