printk: Remove no longer used LOG_PREFIX.
[linux-2.6-microblaze.git] / crypto / algapi.c
index c0755cf..2545c5f 100644 (file)
@@ -57,9 +57,14 @@ static int crypto_check_alg(struct crypto_alg *alg)
        if (alg->cra_alignmask & (alg->cra_alignmask + 1))
                return -EINVAL;
 
-       if (alg->cra_blocksize > PAGE_SIZE / 8)
+       /* General maximums for all algs. */
+       if (alg->cra_alignmask > MAX_ALGAPI_ALIGNMASK)
                return -EINVAL;
 
+       if (alg->cra_blocksize > MAX_ALGAPI_BLOCKSIZE)
+               return -EINVAL;
+
+       /* Lower maximums for specific alg types. */
        if (!alg->cra_type && (alg->cra_flags & CRYPTO_ALG_TYPE_MASK) ==
                               CRYPTO_ALG_TYPE_CIPHER) {
                if (alg->cra_alignmask > MAX_CIPHER_ALIGNMASK)
@@ -253,6 +258,14 @@ static struct crypto_larval *__crypto_register_alg(struct crypto_alg *alg)
        list_add(&alg->cra_list, &crypto_alg_list);
        list_add(&larval->alg.cra_list, &crypto_alg_list);
 
+       atomic_set(&alg->encrypt_cnt, 0);
+       atomic_set(&alg->decrypt_cnt, 0);
+       atomic64_set(&alg->encrypt_tlen, 0);
+       atomic64_set(&alg->decrypt_tlen, 0);
+       atomic_set(&alg->verify_cnt, 0);
+       atomic_set(&alg->cipher_err_cnt, 0);
+       atomic_set(&alg->sign_cnt, 0);
+
 out:
        return larval;
 
@@ -367,6 +380,8 @@ static void crypto_wait_for_test(struct crypto_larval *larval)
 
        err = wait_for_completion_killable(&larval->completion);
        WARN_ON(err);
+       if (!err)
+               crypto_probing_notify(CRYPTO_MSG_ALG_LOADED, larval);
 
 out:
        crypto_larval_kill(&larval->alg);