OSDN Git Service

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 abe8c15..ba190cf 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 e976539..72621bd 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 ff1410a..8332698 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);