crypto: omap-sham backlog handling fix
cover crypto: omap-sham backlog handling fix
Hi,
Please take this important fix.
- Dmitry
Dmitry Kasatkin (1):
omap-sham: backlog handling fix
drivers/crypto/omap-sham.c | 7 +++---- 1 files changed, 3 insertions(+), 4 deletions(-)
PATCH 1/1 omap-sham: backlog handling fix
Previous commit "removed redundant locking" introduced
a bug in handling backlog.
In certain cases, when async request complete callback will call complete() on -EINPROGRESS code, it will cause uncompleted requests. It does not happen in implementation similar to crypto test manager, but it will happen in implementation similar to dm-crypt. Backlog needs to be checked before dequeuing next request.
--- drivers/crypto/omap-sham.c | 7 +++---- 1 files changed, 3 insertions(+), 4 deletions(-)
drivers/crypto/omap-sham.c +3 -4
@@ -664,7 +664,7 @@ static void omap_sham_finish_req(struct ahash_request *req, int err)static int omap_sham_handle_queue (struct omap_sham_dev *dd,struct ahash_request *req) { -struct crypto_async_request *async_req, *backlog =0 ; +struct crypto_async_request *async_req, *backlog;struct omap_sham_reqctx *ctx;struct ahash_request *prev_req;unsigned long flags;
@@ -677,11 +677,10 @@ static int omap_sham_handle_queue(struct omap_sham_dev *dd,spin_unlock_irqrestore (&dd->lock, flags);return ret; } + backlog =crypto_get_backlog (&dd->queue); async_req =crypto_dequeue_request (&dd->queue); -if (async_req) { +if (async_req) dd->flags |=FLAGS_BUSY ; - backlog =crypto_get_backlog (&dd->queue); - }spin_unlock_irqrestore (&dd->lock, flags);if (!async_req)
Signature · 1 line
1.7.0.4
Herbert Xu
maintainerRe: [PATCH 1/1] omap-sham: backlog handling fix
Quoted 9 lines · Dmitry Kasatkin
Previous commit "removed redundant locking" introduced
a bug in handling backlog.
In certain cases, when async request complete callback will callcomplete()on-EINPROGRESScode, it will cause uncompleted requests. It does not happen in implementation similar to crypto test manager, but it will happen in implementation similar to dm-crypt. Backlog needs to be checked before dequeuing next request.Signed-off-by Dmitry Kasatkin <[email protected]>
Patch applied. Thanks Dmitry.
Signature · 3 lines
Email: Herbert Xu <[email protected]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt