afs: add missing up_write() on return
[sfrench/cifs-2.6.git] / crypto / cryptd.c
index ac6dce2e7596c4518287bdc355c088eb1a1e5a37..250425263e00e59fad2b5a11436ce5a02b9dbe41 100644 (file)
@@ -131,7 +131,7 @@ static int cryptd_blkcipher_enqueue(struct ablkcipher_request *req,
        req->base.complete = complete;
 
        spin_lock_bh(&state->lock);
-       err = ablkcipher_enqueue_request(crypto_ablkcipher_alg(tfm), req);
+       err = ablkcipher_enqueue_request(&state->queue, req);
        spin_unlock_bh(&state->lock);
 
        wake_up_process(state->task);
@@ -173,7 +173,8 @@ static void cryptd_blkcipher_exit_tfm(struct crypto_tfm *tfm)
        int active;
 
        mutex_lock(&state->mutex);
-       active = ablkcipher_tfm_in_queue(__crypto_ablkcipher_cast(tfm));
+       active = ablkcipher_tfm_in_queue(&state->queue,
+                                        __crypto_ablkcipher_cast(tfm));
        mutex_unlock(&state->mutex);
 
        BUG_ON(active);
@@ -227,21 +228,23 @@ static struct crypto_instance *cryptd_alloc_blkcipher(
        struct crypto_alg *alg;
 
        alg = crypto_get_attr_alg(tb, CRYPTO_ALG_TYPE_BLKCIPHER,
-                                 CRYPTO_ALG_TYPE_MASK | CRYPTO_ALG_ASYNC);
+                                 CRYPTO_ALG_TYPE_MASK);
        if (IS_ERR(alg))
-               return ERR_PTR(PTR_ERR(alg));
+               return ERR_CAST(alg);
 
        inst = cryptd_alloc_instance(alg, state);
        if (IS_ERR(inst))
                goto out_put_alg;
 
-       inst->alg.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER | CRYPTO_ALG_ASYNC;
+       inst->alg.cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | CRYPTO_ALG_ASYNC;
        inst->alg.cra_type = &crypto_ablkcipher_type;
 
        inst->alg.cra_ablkcipher.ivsize = alg->cra_blkcipher.ivsize;
        inst->alg.cra_ablkcipher.min_keysize = alg->cra_blkcipher.min_keysize;
        inst->alg.cra_ablkcipher.max_keysize = alg->cra_blkcipher.max_keysize;
 
+       inst->alg.cra_ablkcipher.geniv = alg->cra_blkcipher.geniv;
+
        inst->alg.cra_ctxsize = sizeof(struct cryptd_blkcipher_ctx);
 
        inst->alg.cra_init = cryptd_blkcipher_init_tfm;
@@ -251,8 +254,6 @@ static struct crypto_instance *cryptd_alloc_blkcipher(
        inst->alg.cra_ablkcipher.encrypt = cryptd_blkcipher_encrypt_enqueue;
        inst->alg.cra_ablkcipher.decrypt = cryptd_blkcipher_decrypt_enqueue;
 
-       inst->alg.cra_ablkcipher.queue = &state->queue;
-
 out_put_alg:
        crypto_mod_put(alg);
        return inst;
@@ -266,7 +267,7 @@ static struct crypto_instance *cryptd_alloc(struct rtattr **tb)
 
        algt = crypto_get_attr_type(tb);
        if (IS_ERR(algt))
-               return ERR_PTR(PTR_ERR(algt));
+               return ERR_CAST(algt);
 
        switch (algt->type & algt->mask & CRYPTO_ALG_TYPE_MASK) {
        case CRYPTO_ALG_TYPE_BLKCIPHER: