Merge tag 'v6.9-p1' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
[linux-2.6-microblaze.git] / drivers / crypto / virtio / virtio_crypto_akcipher_algs.c
index de53edd..cb92b7f 100644 (file)
@@ -225,11 +225,11 @@ static int __virtio_crypto_akcipher_do_req(struct virtio_crypto_akcipher_request
        struct virtio_crypto *vcrypto = ctx->vcrypto;
        struct virtio_crypto_op_data_req *req_data = vc_req->req_data;
        struct scatterlist *sgs[4], outhdr_sg, inhdr_sg, srcdata_sg, dstdata_sg;
-       void *src_buf = NULL, *dst_buf = NULL;
+       void *src_buf, *dst_buf = NULL;
        unsigned int num_out = 0, num_in = 0;
        int node = dev_to_node(&vcrypto->vdev->dev);
        unsigned long flags;
-       int ret = -ENOMEM;
+       int ret;
        bool verify = vc_akcipher_req->opcode == VIRTIO_CRYPTO_AKCIPHER_VERIFY;
        unsigned int src_len = verify ? req->src_len + req->dst_len : req->src_len;
 
@@ -240,7 +240,7 @@ static int __virtio_crypto_akcipher_do_req(struct virtio_crypto_akcipher_request
        /* src data */
        src_buf = kcalloc_node(src_len, 1, GFP_KERNEL, node);
        if (!src_buf)
-               goto err;
+               return -ENOMEM;
 
        if (verify) {
                /* for verify operation, both src and dst data work as OUT direction */
@@ -255,7 +255,7 @@ static int __virtio_crypto_akcipher_do_req(struct virtio_crypto_akcipher_request
                /* dst data */
                dst_buf = kcalloc_node(req->dst_len, 1, GFP_KERNEL, node);
                if (!dst_buf)
-                       goto err;
+                       goto free_src;
 
                sg_init_one(&dstdata_sg, dst_buf, req->dst_len);
                sgs[num_out + num_in++] = &dstdata_sg;
@@ -278,9 +278,9 @@ static int __virtio_crypto_akcipher_do_req(struct virtio_crypto_akcipher_request
        return 0;
 
 err:
-       kfree(src_buf);
        kfree(dst_buf);
-
+free_src:
+       kfree(src_buf);
        return -ENOMEM;
 }