slimbus: core: Set fwnode for a device when setting of_node
[linux-2.6-microblaze.git] / crypto / essiv.c
index 495a2d1..465a89c 100644 (file)
@@ -75,9 +75,6 @@ static int essiv_skcipher_setkey(struct crypto_skcipher *tfm,
                                  crypto_skcipher_get_flags(tfm) &
                                  CRYPTO_TFM_REQ_MASK);
        err = crypto_skcipher_setkey(tctx->u.skcipher, key, keylen);
-       crypto_skcipher_set_flags(tfm,
-                                 crypto_skcipher_get_flags(tctx->u.skcipher) &
-                                 CRYPTO_TFM_RES_MASK);
        if (err)
                return err;
 
@@ -90,13 +87,8 @@ static int essiv_skcipher_setkey(struct crypto_skcipher *tfm,
        crypto_cipher_set_flags(tctx->essiv_cipher,
                                crypto_skcipher_get_flags(tfm) &
                                CRYPTO_TFM_REQ_MASK);
-       err = crypto_cipher_setkey(tctx->essiv_cipher, salt,
-                                  crypto_shash_digestsize(tctx->hash));
-       crypto_skcipher_set_flags(tfm,
-                                 crypto_cipher_get_flags(tctx->essiv_cipher) &
-                                 CRYPTO_TFM_RES_MASK);
-
-       return err;
+       return crypto_cipher_setkey(tctx->essiv_cipher, salt,
+                                   crypto_shash_digestsize(tctx->hash));
 }
 
 static int essiv_aead_setkey(struct crypto_aead *tfm, const u8 *key,
@@ -112,15 +104,11 @@ static int essiv_aead_setkey(struct crypto_aead *tfm, const u8 *key,
        crypto_aead_set_flags(tctx->u.aead, crypto_aead_get_flags(tfm) &
                                            CRYPTO_TFM_REQ_MASK);
        err = crypto_aead_setkey(tctx->u.aead, key, keylen);
-       crypto_aead_set_flags(tfm, crypto_aead_get_flags(tctx->u.aead) &
-                                  CRYPTO_TFM_RES_MASK);
        if (err)
                return err;
 
-       if (crypto_authenc_extractkeys(&keys, key, keylen) != 0) {
-               crypto_aead_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (crypto_authenc_extractkeys(&keys, key, keylen) != 0)
                return -EINVAL;
-       }
 
        desc->tfm = tctx->hash;
        err = crypto_shash_init(desc) ?:
@@ -132,12 +120,8 @@ static int essiv_aead_setkey(struct crypto_aead *tfm, const u8 *key,
        crypto_cipher_clear_flags(tctx->essiv_cipher, CRYPTO_TFM_REQ_MASK);
        crypto_cipher_set_flags(tctx->essiv_cipher, crypto_aead_get_flags(tfm) &
                                                    CRYPTO_TFM_REQ_MASK);
-       err = crypto_cipher_setkey(tctx->essiv_cipher, salt,
-                                  crypto_shash_digestsize(tctx->hash));
-       crypto_aead_set_flags(tfm, crypto_cipher_get_flags(tctx->essiv_cipher) &
-                                  CRYPTO_TFM_RES_MASK);
-
-       return err;
+       return crypto_cipher_setkey(tctx->essiv_cipher, salt,
+                                   crypto_shash_digestsize(tctx->hash));
 }
 
 static int essiv_aead_setauthsize(struct crypto_aead *tfm,
@@ -442,7 +426,7 @@ static bool essiv_supported_algorithms(const char *essiv_cipher_name,
        if (ivsize != alg->cra_blocksize)
                goto out;
 
-       if (crypto_shash_alg_has_setkey(hash_alg))
+       if (crypto_shash_alg_needs_key(hash_alg))
                goto out;
 
        ret = true;
@@ -468,6 +452,7 @@ static int essiv_create(struct crypto_template *tmpl, struct rtattr **tb)
        struct shash_alg *hash_alg;
        int ivsize;
        u32 type;
+       u32 mask;
        int err;
 
        algt = crypto_get_attr_type(tb);
@@ -483,6 +468,7 @@ static int essiv_create(struct crypto_template *tmpl, struct rtattr **tb)
                return PTR_ERR(shash_name);
 
        type = algt->type & algt->mask;
+       mask = crypto_requires_sync(algt->type, algt->mask);
 
        switch (type) {
        case CRYPTO_ALG_TYPE_SKCIPHER:
@@ -495,11 +481,8 @@ static int essiv_create(struct crypto_template *tmpl, struct rtattr **tb)
                ictx = crypto_instance_ctx(inst);
 
                /* Symmetric cipher, e.g., "cbc(aes)" */
-               crypto_set_skcipher_spawn(&ictx->u.skcipher_spawn, inst);
-               err = crypto_grab_skcipher(&ictx->u.skcipher_spawn,
-                                          inner_cipher_name, 0,
-                                          crypto_requires_sync(algt->type,
-                                                               algt->mask));
+               err = crypto_grab_skcipher(&ictx->u.skcipher_spawn, inst,
+                                          inner_cipher_name, 0, mask);
                if (err)
                        goto out_free_inst;
                skcipher_alg = crypto_spawn_skcipher_alg(&ictx->u.skcipher_spawn);
@@ -517,11 +500,8 @@ static int essiv_create(struct crypto_template *tmpl, struct rtattr **tb)
                ictx = crypto_instance_ctx(inst);
 
                /* AEAD cipher, e.g., "authenc(hmac(sha256),cbc(aes))" */
-               crypto_set_aead_spawn(&ictx->u.aead_spawn, inst);
-               err = crypto_grab_aead(&ictx->u.aead_spawn,
-                                      inner_cipher_name, 0,
-                                      crypto_requires_sync(algt->type,
-                                                           algt->mask));
+               err = crypto_grab_aead(&ictx->u.aead_spawn, inst,
+                                      inner_cipher_name, 0, mask);
                if (err)
                        goto out_free_inst;
                aead_alg = crypto_spawn_aead_alg(&ictx->u.aead_spawn);