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: Herbert Xu <herbert@gondor.apana.org.au>
Acked-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
                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);
 
        nhash->descsize = hash->descsize;
 
-       err = alg->clone_tfm(nhash, hash);
-       if (err) {
-               crypto_free_shash(nhash);
-               return ERR_PTR(err);
+       if (alg->clone_tfm) {
+               err = alg->clone_tfm(nhash, hash);
+               if (err) {
+                       crypto_free_shash(nhash);
+                       return ERR_PTR(err);
+               }
        }
 
        return nhash;