2008-05-07 13:40:46

by Herbert Xu

[permalink] [raw]
Subject: [CRYPTO] cryptd: Fix EINPROGRESS notification context

Hi:

While merging the ahash patch I found this buglet in cryptd.

commit 34fe02eec1cf26f67070588a63252ca7a38c55c2
Author: Herbert Xu <[email protected]>
Date: Wed May 7 21:10:13 2008 +0800

[CRYPTO] cryptd: Fix EINPROGRESS notification context

The EINPROGRESS notifications should be done just like the final
call-backs, i.e., with BH off. This patch fixes the call in cryptd
since previously it was called with BH on.

Signed-off-by: Herbert Xu <[email protected]>

diff --git a/crypto/cryptd.c b/crypto/cryptd.c
index b150de5..f38e147 100644
--- a/crypto/cryptd.c
+++ b/crypto/cryptd.c
@@ -82,10 +82,8 @@ static void cryptd_blkcipher_crypt(struct ablkcipher_request *req,

rctx = ablkcipher_request_ctx(req);

- if (unlikely(err == -EINPROGRESS)) {
- rctx->complete(&req->base, err);
- return;
- }
+ if (unlikely(err == -EINPROGRESS))
+ goto out;

desc.tfm = child;
desc.info = req->info;
@@ -95,8 +93,9 @@ static void cryptd_blkcipher_crypt(struct ablkcipher_request *req,

req->base.complete = rctx->complete;

+out:
local_bh_disable();
- req->base.complete(&req->base, err);
+ rctx->complete(&req->base, err);
local_bh_enable();
}

Cheers,
--
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt