git://ftp.safe.ca
/
safe
/
jmp
/
linux-2.6
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[ARM] cachetype: move definitions to separate header
[safe/jmp/linux-2.6]
/
crypto
/
chainiv.c
diff --git
a/crypto/chainiv.c
b/crypto/chainiv.c
index
6da3f57
..
9affade
100644
(file)
--- a/
crypto/chainiv.c
+++ b/
crypto/chainiv.c
@@
-117,6
+117,7
@@
static int chainiv_init(struct crypto_tfm *tfm)
static int async_chainiv_schedule_work(struct async_chainiv_ctx *ctx)
{
int queued;
static int async_chainiv_schedule_work(struct async_chainiv_ctx *ctx)
{
int queued;
+ int err = ctx->err;
if (!ctx->queue.qlen) {
smp_mb__before_clear_bit();
if (!ctx->queue.qlen) {
smp_mb__before_clear_bit();
@@
-131,7
+132,7
@@
static int async_chainiv_schedule_work(struct async_chainiv_ctx *ctx)
BUG_ON(!queued);
out:
BUG_ON(!queued);
out:
- return
ctx->
err;
+ return err;
}
static int async_chainiv_postpone_request(struct skcipher_givcrypt_request *req)
}
static int async_chainiv_postpone_request(struct skcipher_givcrypt_request *req)
@@
-227,6
+228,7
@@
static void async_chainiv_do_postponed(struct work_struct *work)
postponed);
struct skcipher_givcrypt_request *req;
struct ablkcipher_request *subreq;
postponed);
struct skcipher_givcrypt_request *req;
struct ablkcipher_request *subreq;
+ int err;
/* Only handle one request at a time to avoid hogging keventd. */
spin_lock_bh(&ctx->lock);
/* Only handle one request at a time to avoid hogging keventd. */
spin_lock_bh(&ctx->lock);
@@
-241,7
+243,11
@@
static void async_chainiv_do_postponed(struct work_struct *work)
subreq = skcipher_givcrypt_reqctx(req);
subreq->base.flags |= CRYPTO_TFM_REQ_MAY_SLEEP;
subreq = skcipher_givcrypt_reqctx(req);
subreq->base.flags |= CRYPTO_TFM_REQ_MAY_SLEEP;
- async_chainiv_givencrypt_tail(req);
+ err = async_chainiv_givencrypt_tail(req);
+
+ local_bh_disable();
+ skcipher_givcrypt_complete(req, err);
+ local_bh_enable();
}
static int async_chainiv_init(struct crypto_tfm *tfm)
}
static int async_chainiv_init(struct crypto_tfm *tfm)