crypto: virtio - convert to new crypto engine API
authorCorentin LABBE <clabbe.montjoie@gmail.com>
Fri, 26 Jan 2018 19:15:32 +0000 (20:15 +0100)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 15 Feb 2018 15:26:52 +0000 (23:26 +0800)
This patch convert the driver to the new crypto engine API.

Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/virtio/virtio_crypto_algs.c
drivers/crypto/virtio/virtio_crypto_common.h
drivers/crypto/virtio/virtio_crypto_core.c

index abe8c15450df90ffd1e79fd984c7bd54bb3bb397..ba190cfa7aa18b54a0caff6143058a6bb022e70c 100644 (file)
@@ -29,6 +29,7 @@
 
 
 struct virtio_crypto_ablkcipher_ctx {
+       struct crypto_engine_ctx enginectx;
        struct virtio_crypto *vcrypto;
        struct crypto_tfm *tfm;
 
@@ -491,7 +492,7 @@ static int virtio_crypto_ablkcipher_encrypt(struct ablkcipher_request *req)
        vc_sym_req->ablkcipher_req = req;
        vc_sym_req->encrypt = true;
 
-       return crypto_transfer_cipher_request_to_engine(data_vq->engine, req);
+       return crypto_transfer_ablkcipher_request_to_engine(data_vq->engine, req);
 }
 
 static int virtio_crypto_ablkcipher_decrypt(struct ablkcipher_request *req)
@@ -511,7 +512,7 @@ static int virtio_crypto_ablkcipher_decrypt(struct ablkcipher_request *req)
        vc_sym_req->ablkcipher_req = req;
        vc_sym_req->encrypt = false;
 
-       return crypto_transfer_cipher_request_to_engine(data_vq->engine, req);
+       return crypto_transfer_ablkcipher_request_to_engine(data_vq->engine, req);
 }
 
 static int virtio_crypto_ablkcipher_init(struct crypto_tfm *tfm)
@@ -521,6 +522,9 @@ static int virtio_crypto_ablkcipher_init(struct crypto_tfm *tfm)
        tfm->crt_ablkcipher.reqsize = sizeof(struct virtio_crypto_sym_request);
        ctx->tfm = tfm;
 
+       ctx->enginectx.op.do_one_request = virtio_crypto_ablkcipher_crypt_req;
+       ctx->enginectx.op.prepare_request = NULL;
+       ctx->enginectx.op.unprepare_request = NULL;
        return 0;
 }
 
@@ -538,9 +542,9 @@ static void virtio_crypto_ablkcipher_exit(struct crypto_tfm *tfm)
 }
 
 int virtio_crypto_ablkcipher_crypt_req(
-       struct crypto_engine *engine,
-       struct ablkcipher_request *req)
+       struct crypto_engine *engine, void *vreq)
 {
+       struct ablkcipher_request *req = container_of(vreq, struct ablkcipher_request, base);
        struct virtio_crypto_sym_request *vc_sym_req =
                                ablkcipher_request_ctx(req);
        struct virtio_crypto_request *vc_req = &vc_sym_req->base;
@@ -561,8 +565,8 @@ static void virtio_crypto_ablkcipher_finalize_req(
        struct ablkcipher_request *req,
        int err)
 {
-       crypto_finalize_cipher_request(vc_sym_req->base.dataq->engine,
-                                       req, err);
+       crypto_finalize_ablkcipher_request(vc_sym_req->base.dataq->engine,
+                                          req, err);
        kzfree(vc_sym_req->iv);
        virtcrypto_clear_request(&vc_sym_req->base);
 }
index e976539a05d9229571ed35846a5065ab6db6713f..72621bd672114dbec2f0c886d6354fc327d183d1 100644 (file)
@@ -107,8 +107,7 @@ struct virtio_crypto *virtcrypto_get_dev_node(int node);
 int virtcrypto_dev_start(struct virtio_crypto *vcrypto);
 void virtcrypto_dev_stop(struct virtio_crypto *vcrypto);
 int virtio_crypto_ablkcipher_crypt_req(
-       struct crypto_engine *engine,
-       struct ablkcipher_request *req);
+       struct crypto_engine *engine, void *vreq);
 
 void
 virtcrypto_clear_request(struct virtio_crypto_request *vc_req);
index ff1410a32c2bb2e5c52b8e6d95c9b2a76c8b7d7d..83326986c113db43edb947d236d7fc8e1dfc55be 100644 (file)
@@ -111,9 +111,6 @@ static int virtcrypto_find_vqs(struct virtio_crypto *vi)
                        ret = -ENOMEM;
                        goto err_engine;
                }
-
-               vi->data_vq[i].engine->cipher_one_request =
-                       virtio_crypto_ablkcipher_crypt_req;
        }
 
        kfree(names);