#ifdef CONFIG_CRYPTO_DEV_SUN8I_CE_DEBUG
        struct skcipher_alg *alg = crypto_skcipher_alg(tfm);
        struct sun8i_ce_alg_template *algt;
-#endif
-       SYNC_SKCIPHER_REQUEST_ON_STACK(subreq, op->fallback_tfm);
 
-#ifdef CONFIG_CRYPTO_DEV_SUN8I_CE_DEBUG
        algt = container_of(alg, struct sun8i_ce_alg_template, alg.skcipher);
        algt->stat_fb++;
 #endif
 
-       skcipher_request_set_sync_tfm(subreq, op->fallback_tfm);
-       skcipher_request_set_callback(subreq, areq->base.flags, NULL, NULL);
-       skcipher_request_set_crypt(subreq, areq->src, areq->dst,
+       skcipher_request_set_tfm(&rctx->fallback_req, op->fallback_tfm);
+       skcipher_request_set_callback(&rctx->fallback_req, areq->base.flags,
+                                     areq->base.complete, areq->base.data);
+       skcipher_request_set_crypt(&rctx->fallback_req, areq->src, areq->dst,
                                   areq->cryptlen, areq->iv);
        if (rctx->op_dir & CE_DECRYPTION)
-               err = crypto_skcipher_decrypt(subreq);
+               err = crypto_skcipher_decrypt(&rctx->fallback_req);
        else
-               err = crypto_skcipher_encrypt(subreq);
-       skcipher_request_zero(subreq);
+               err = crypto_skcipher_encrypt(&rctx->fallback_req);
        return err;
 }
 
        algt = container_of(alg, struct sun8i_ce_alg_template, alg.skcipher);
        op->ce = algt->ce;
 
-       sktfm->reqsize = sizeof(struct sun8i_cipher_req_ctx);
-
-       op->fallback_tfm = crypto_alloc_sync_skcipher(name, 0, CRYPTO_ALG_NEED_FALLBACK);
+       op->fallback_tfm = crypto_alloc_skcipher(name, 0, CRYPTO_ALG_NEED_FALLBACK);
        if (IS_ERR(op->fallback_tfm)) {
                dev_err(op->ce->dev, "ERROR: Cannot allocate fallback for %s %ld\n",
                        name, PTR_ERR(op->fallback_tfm));
                return PTR_ERR(op->fallback_tfm);
        }
 
+       sktfm->reqsize = sizeof(struct sun8i_cipher_req_ctx) +
+                        crypto_skcipher_reqsize(op->fallback_tfm);
+
+
        dev_info(op->ce->dev, "Fallback for %s is %s\n",
                 crypto_tfm_alg_driver_name(&sktfm->base),
-                crypto_tfm_alg_driver_name(crypto_skcipher_tfm(&op->fallback_tfm->base)));
+                crypto_tfm_alg_driver_name(crypto_skcipher_tfm(op->fallback_tfm)));
 
        op->enginectx.op.do_one_request = sun8i_ce_handle_cipher_request;
        op->enginectx.op.prepare_request = NULL;
        return 0;
 error_pm:
        pm_runtime_put_noidle(op->ce->dev);
-       crypto_free_sync_skcipher(op->fallback_tfm);
+       crypto_free_skcipher(op->fallback_tfm);
        return err;
 }
 
                memzero_explicit(op->key, op->keylen);
                kfree(op->key);
        }
-       crypto_free_sync_skcipher(op->fallback_tfm);
+       crypto_free_skcipher(op->fallback_tfm);
        pm_runtime_put_sync_suspend(op->ce->dev);
 }
 
        if (!op->key)
                return -ENOMEM;
 
-       crypto_sync_skcipher_clear_flags(op->fallback_tfm, CRYPTO_TFM_REQ_MASK);
-       crypto_sync_skcipher_set_flags(op->fallback_tfm, tfm->base.crt_flags & CRYPTO_TFM_REQ_MASK);
+       crypto_skcipher_clear_flags(op->fallback_tfm, CRYPTO_TFM_REQ_MASK);
+       crypto_skcipher_set_flags(op->fallback_tfm, tfm->base.crt_flags & CRYPTO_TFM_REQ_MASK);
 
-       return crypto_sync_skcipher_setkey(op->fallback_tfm, key, keylen);
+       return crypto_skcipher_setkey(op->fallback_tfm, key, keylen);
 }
 
 int sun8i_ce_des3_setkey(struct crypto_skcipher *tfm, const u8 *key,
        if (!op->key)
                return -ENOMEM;
 
-       crypto_sync_skcipher_clear_flags(op->fallback_tfm, CRYPTO_TFM_REQ_MASK);
-       crypto_sync_skcipher_set_flags(op->fallback_tfm, tfm->base.crt_flags & CRYPTO_TFM_REQ_MASK);
+       crypto_skcipher_clear_flags(op->fallback_tfm, CRYPTO_TFM_REQ_MASK);
+       crypto_skcipher_set_flags(op->fallback_tfm, tfm->base.crt_flags & CRYPTO_TFM_REQ_MASK);
 
-       return crypto_sync_skcipher_setkey(op->fallback_tfm, key, keylen);
+       return crypto_skcipher_setkey(op->fallback_tfm, key, keylen);
 }