···117117static int async_chainiv_schedule_work(struct async_chainiv_ctx *ctx)118118{119119 int queued;120120+ int err = ctx->err;120121121122 if (!ctx->queue.qlen) {122123 smp_mb__before_clear_bit();···132131 BUG_ON(!queued);133132134133out:135135- return ctx->err;134134+ return err;136135}137136138137static int async_chainiv_postpone_request(struct skcipher_givcrypt_request *req)···228227 postponed);229228 struct skcipher_givcrypt_request *req;230229 struct ablkcipher_request *subreq;230230+ int err;231231232232 /* Only handle one request at a time to avoid hogging keventd. */233233 spin_lock_bh(&ctx->lock);···243241 subreq = skcipher_givcrypt_reqctx(req);244242 subreq->base.flags |= CRYPTO_TFM_REQ_MAY_SLEEP;245243246246- async_chainiv_givencrypt_tail(req);244244+ err = async_chainiv_givencrypt_tail(req);245245+246246+ local_bh_disable();247247+ skcipher_givcrypt_complete(req, err);248248+ local_bh_enable();247249}248250249251static int async_chainiv_init(struct crypto_tfm *tfm)