crt->final  = alg->final;
        crt->digest = alg->digest;
        crt->setkey = ahash_setkey;
-       crt->base   = __crypto_ahash_cast(tfm);
        crt->digestsize = alg->digestsize;
 
        return 0;
 
        crt->setkey     = dalg->dia_setkey ? digest_async_setkey :
                                                digest_async_nosetkey;
        crt->digestsize = dalg->dia_digestsize;
-       crt->base       = __crypto_ahash_cast(tfm);
 
        return 0;
 }
 
        crt->digest     = hash_async_digest;
        crt->setkey     = hash_async_setkey;
        crt->digestsize = alg->digestsize;
-       crt->base       = __crypto_ahash_cast(tfm);
 
        return 0;
 }
 
 struct ahash_request {
        struct crypto_async_request base;
 
-       void *info;
-
        unsigned int nbytes;
        struct scatterlist *src;
        u8                 *result;
                        unsigned int keylen);
 
        unsigned int digestsize;
-       struct crypto_ahash *base;
        unsigned int reqsize;
 };
 
 {
        struct ahash_tfm *crt = crypto_ahash_crt(tfm);
 
-       return crt->setkey(crt->base, key, keylen);
+       return crt->setkey(tfm, key, keylen);
 }
 
 static inline int crypto_ahash_digest(struct ahash_request *req)
 static inline void ahash_request_set_tfm(struct ahash_request *req,
                                         struct crypto_ahash *tfm)
 {
-       req->base.tfm = crypto_ahash_tfm(crypto_ahash_crt(tfm)->base);
+       req->base.tfm = crypto_ahash_tfm(tfm);
 }
 
 static inline struct ahash_request *ahash_request_alloc(