include/asm-x86/bug.h: checkpatch cleanups - formatting only
[sfrench/cifs-2.6.git] / crypto / cryptd.c
index 3ff4e1f0f0328d9acb023628e4233b0b1acd607e..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:
@@ -298,7 +299,7 @@ static inline int cryptd_create_thread(struct cryptd_state *state,
        mutex_init(&state->mutex);
        crypto_init_queue(&state->queue, CRYPTD_MAX_QLEN);
 
-       state->task = kthread_create(fn, state, name);
+       state->task = kthread_run(fn, state, name);
        if (IS_ERR(state->task))
                return PTR_ERR(state->task);
 
@@ -316,6 +317,8 @@ static int cryptd_thread(void *data)
        struct cryptd_state *state = data;
        int stop;
 
+       current->flags |= PF_NOFREEZE;
+
        do {
                struct crypto_async_request *req, *backlog;