Skip to content

Commit 22184f0

Browse files
herbertxvijay-suman
authored andcommitted
crypto: caam/qi - Fix drv_ctx refcount bug
commit b7b39df7e710b0068356e4c696af07aa10e2cd3d upstream. 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]> Signed-off-by: Greg Kroah-Hartman <[email protected]> (cherry picked from commit 877ee3ba2f78c3cdb3eddd6517e8f9807ea9ceb3) Signed-off-by: Vijayendra Suman <[email protected]>
1 parent 68e69a2 commit 22184f0

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
@@ -115,12 +115,12 @@ int caam_qi_enqueue(struct device *qidev, struct caam_drv_req *req)
115115
qm_fd_addr_set64(&fd, addr);
116116

117117
do {
118+
refcount_inc(&req->drv_ctx->refcnt);
118119
ret = qman_enqueue(req->drv_ctx->req_fq, &fd);
119-
if (likely(!ret)) {
120-
refcount_inc(&req->drv_ctx->refcnt);
120+
if (likely(!ret))
121121
return 0;
122-
}
123122

123+
refcount_dec(&req->drv_ctx->refcnt);
124124
if (ret != -EBUSY)
125125
break;
126126
num_retries++;

0 commit comments

Comments
 (0)