Commit b7be31b0 authored by Herbert Xu's avatar Herbert Xu
Browse files

crypto: shash - Allow cloning on algorithms with no init_tfm



Some shash algorithms are so simple that they don't have an init_tfm
function.  These can be cloned trivially.  Check this before failing
in crypto_clone_shash.

Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
Acked-by: default avatarArd Biesheuvel <ardb@kernel.org>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent ed51bba1
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -597,7 +597,7 @@ struct crypto_shash *crypto_clone_shash(struct crypto_shash *hash)
		return hash;
	}

	if (!alg->clone_tfm)
	if (!alg->clone_tfm && (alg->init_tfm || alg->base.cra_init))
		return ERR_PTR(-ENOSYS);

	nhash = crypto_clone_tfm(&crypto_shash_type, tfm);
@@ -606,11 +606,13 @@ struct crypto_shash *crypto_clone_shash(struct crypto_shash *hash)

	nhash->descsize = hash->descsize;

	if (alg->clone_tfm) {
		err = alg->clone_tfm(nhash, hash);
		if (err) {
			crypto_free_shash(nhash);
			return ERR_PTR(err);
		}
	}

	return nhash;
}