linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/2] Detect & register virtio-crypto algos only if it can be supported by backend
@ 2018-06-13 20:38 Farhan Ali
  2018-06-13 20:38 ` [PATCH v2 1/2] crypto/virtio-crypto: Read crypto services and algorithm masks Farhan Ali
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Farhan Ali @ 2018-06-13 20:38 UTC (permalink / raw)
  To: linux-kernel, kvm
  Cc: mst, qemu-devel, arei.gonglei, longpeng2, pasic, frankja,
	borntraeger, alifm

Hi,

Currently the Linux virtio-crypto driver registers the crypto
algorithm without verifying if the backend actually supports the
algorithm.

This kernel patch series adds support for registering algorithm
with Linux crypto layer, only if the algorithm is supported by
the backend device. This also makes the driver more compliant with
the virtio-crypto spec [1].

I would appreciate any feedback or comments on this.

Thank you
Farhan

Reference
---------
[1] Virtio crypto spec proposal https://lists.gnu.org/archive/html/qemu-devel/2017-12/msg00816.html

ChangeLog
---------
v1 -> v2
   - Modify comment as suggested by Arei (patch 1)
   - Modify error message as suggested by Arei (patch 2)


Farhan Ali (2):
  crypto/virtio-crypto: Read crypto services and algorithm masks
  crypto/virtio-crypto: Register an algo only if it's supported

 drivers/crypto/virtio/virtio_crypto_algs.c   | 112 ++++++++++++++++++---------
 drivers/crypto/virtio/virtio_crypto_common.h |  25 +++++-
 drivers/crypto/virtio/virtio_crypto_core.c   |  29 +++++++
 drivers/crypto/virtio/virtio_crypto_mgr.c    |  81 +++++++++++++++++--
 4 files changed, 202 insertions(+), 45 deletions(-)

-- 
2.7.4


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v2 1/2] crypto/virtio-crypto: Read crypto services and algorithm masks
  2018-06-13 20:38 [PATCH v2 0/2] Detect & register virtio-crypto algos only if it can be supported by backend Farhan Ali
@ 2018-06-13 20:38 ` Farhan Ali
  2018-06-13 20:38 ` [PATCH v2 2/2] crypto/virtio-crypto: Register an algo only if it's supported Farhan Ali
  2018-06-19 13:26 ` [PATCH v2 0/2] Detect & register virtio-crypto algos only if it can be supported by backend Farhan Ali
  2 siblings, 0 replies; 8+ messages in thread
From: Farhan Ali @ 2018-06-13 20:38 UTC (permalink / raw)
  To: linux-kernel, kvm
  Cc: mst, qemu-devel, arei.gonglei, longpeng2, pasic, frankja,
	borntraeger, alifm

Read the crypto services and algorithm masks which provides
information about the services and algorithms supported by
virtio-crypto backend.

Signed-off-by: Farhan Ali <alifm@linux.ibm.com>
Acked-by: Gonglei <arei.gonglei@huawei.com>
---
 drivers/crypto/virtio/virtio_crypto_common.h | 14 ++++++++++++++
 drivers/crypto/virtio/virtio_crypto_core.c   | 29 ++++++++++++++++++++++++++++
 2 files changed, 43 insertions(+)

diff --git a/drivers/crypto/virtio/virtio_crypto_common.h b/drivers/crypto/virtio/virtio_crypto_common.h
index 66501a5..931a3bd 100644
--- a/drivers/crypto/virtio/virtio_crypto_common.h
+++ b/drivers/crypto/virtio/virtio_crypto_common.h
@@ -55,6 +55,20 @@ struct virtio_crypto {
 	/* Number of queue currently used by the driver */
 	u32 curr_queue;
 
+	/*
+	 * Specifies the services mask which the device support,
+	 * see VIRTIO_CRYPTO_SERVICE_*
+	 */
+	u32 crypto_services;
+
+	/* Detailed algorithms mask */
+	u32 cipher_algo_l;
+	u32 cipher_algo_h;
+	u32 hash_algo;
+	u32 mac_algo_l;
+	u32 mac_algo_h;
+	u32 aead_algo;
+
 	/* Maximum length of cipher key */
 	u32 max_cipher_key_len;
 	/* Maximum length of authenticated key */
diff --git a/drivers/crypto/virtio/virtio_crypto_core.c b/drivers/crypto/virtio/virtio_crypto_core.c
index 8332698..8f745f2 100644
--- a/drivers/crypto/virtio/virtio_crypto_core.c
+++ b/drivers/crypto/virtio/virtio_crypto_core.c
@@ -303,6 +303,13 @@ static int virtcrypto_probe(struct virtio_device *vdev)
 	u32 max_data_queues = 0, max_cipher_key_len = 0;
 	u32 max_auth_key_len = 0;
 	u64 max_size = 0;
+	u32 cipher_algo_l = 0;
+	u32 cipher_algo_h = 0;
+	u32 hash_algo = 0;
+	u32 mac_algo_l = 0;
+	u32 mac_algo_h = 0;
+	u32 aead_algo = 0;
+	u32 crypto_services = 0;
 
 	if (!virtio_has_feature(vdev, VIRTIO_F_VERSION_1))
 		return -ENODEV;
@@ -339,6 +346,20 @@ static int virtcrypto_probe(struct virtio_device *vdev)
 		max_auth_key_len, &max_auth_key_len);
 	virtio_cread(vdev, struct virtio_crypto_config,
 		max_size, &max_size);
+	virtio_cread(vdev, struct virtio_crypto_config,
+		crypto_services, &crypto_services);
+	virtio_cread(vdev, struct virtio_crypto_config,
+		cipher_algo_l, &cipher_algo_l);
+	virtio_cread(vdev, struct virtio_crypto_config,
+		cipher_algo_h, &cipher_algo_h);
+	virtio_cread(vdev, struct virtio_crypto_config,
+		hash_algo, &hash_algo);
+	virtio_cread(vdev, struct virtio_crypto_config,
+		mac_algo_l, &mac_algo_l);
+	virtio_cread(vdev, struct virtio_crypto_config,
+		mac_algo_h, &mac_algo_h);
+	virtio_cread(vdev, struct virtio_crypto_config,
+		aead_algo, &aead_algo);
 
 	/* Add virtio crypto device to global table */
 	err = virtcrypto_devmgr_add_dev(vcrypto);
@@ -358,6 +379,14 @@ static int virtcrypto_probe(struct virtio_device *vdev)
 	vcrypto->max_cipher_key_len = max_cipher_key_len;
 	vcrypto->max_auth_key_len = max_auth_key_len;
 	vcrypto->max_size = max_size;
+	vcrypto->crypto_services = crypto_services;
+	vcrypto->cipher_algo_l = cipher_algo_l;
+	vcrypto->cipher_algo_h = cipher_algo_h;
+	vcrypto->mac_algo_l = mac_algo_l;
+	vcrypto->mac_algo_h = mac_algo_h;
+	vcrypto->hash_algo = hash_algo;
+	vcrypto->aead_algo = aead_algo;
+
 
 	dev_info(&vdev->dev,
 		"max_queues: %u, max_cipher_key_len: %u, max_auth_key_len: %u, max_size 0x%llx\n",
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v2 2/2] crypto/virtio-crypto: Register an algo only if it's supported
  2018-06-13 20:38 [PATCH v2 0/2] Detect & register virtio-crypto algos only if it can be supported by backend Farhan Ali
  2018-06-13 20:38 ` [PATCH v2 1/2] crypto/virtio-crypto: Read crypto services and algorithm masks Farhan Ali
@ 2018-06-13 20:38 ` Farhan Ali
  2018-06-19 13:26 ` [PATCH v2 0/2] Detect & register virtio-crypto algos only if it can be supported by backend Farhan Ali
  2 siblings, 0 replies; 8+ messages in thread
From: Farhan Ali @ 2018-06-13 20:38 UTC (permalink / raw)
  To: linux-kernel, kvm
  Cc: mst, qemu-devel, arei.gonglei, longpeng2, pasic, frankja,
	borntraeger, alifm

From: Farhan Ali <alifm@linux.vnet.ibm.com>

Register a crypto algo with the Linux crypto layer only if
the algorithm is supported by the backend virtio-crypto
device.

Also route crypto requests to a virtio-crypto
device, only if it can support the requested service and
algorithm.

Signed-off-by: Farhan Ali <alifm@linux.ibm.com>
Acked-by: Gonglei <arei.gonglei@huawei.com>
---
 drivers/crypto/virtio/virtio_crypto_algs.c   | 112 ++++++++++++++++++---------
 drivers/crypto/virtio/virtio_crypto_common.h |  11 ++-
 drivers/crypto/virtio/virtio_crypto_mgr.c    |  81 +++++++++++++++++--
 3 files changed, 159 insertions(+), 45 deletions(-)

diff --git a/drivers/crypto/virtio/virtio_crypto_algs.c b/drivers/crypto/virtio/virtio_crypto_algs.c
index ba190cf..11db62f 100644
--- a/drivers/crypto/virtio/virtio_crypto_algs.c
+++ b/drivers/crypto/virtio/virtio_crypto_algs.c
@@ -49,12 +49,18 @@ struct virtio_crypto_sym_request {
 	bool encrypt;
 };
 
+struct virtio_crypto_algo {
+	uint32_t algonum;
+	uint32_t service;
+	unsigned int active_devs;
+	struct crypto_alg algo;
+};
+
 /*
  * The algs_lock protects the below global virtio_crypto_active_devs
  * and crypto algorithms registion.
  */
 static DEFINE_MUTEX(algs_lock);
-static unsigned int virtio_crypto_active_devs;
 static void virtio_crypto_ablkcipher_finalize_req(
 	struct virtio_crypto_sym_request *vc_sym_req,
 	struct ablkcipher_request *req,
@@ -312,15 +318,21 @@ static int virtio_crypto_ablkcipher_setkey(struct crypto_ablkcipher *tfm,
 					 unsigned int keylen)
 {
 	struct virtio_crypto_ablkcipher_ctx *ctx = crypto_ablkcipher_ctx(tfm);
+	uint32_t alg;
 	int ret;
 
+	ret = virtio_crypto_alg_validate_key(keylen, &alg);
+	if (ret)
+		return ret;
+
 	if (!ctx->vcrypto) {
 		/* New key */
 		int node = virtio_crypto_get_current_node();
 		struct virtio_crypto *vcrypto =
-				      virtcrypto_get_dev_node(node);
+				      virtcrypto_get_dev_node(node,
+				      VIRTIO_CRYPTO_SERVICE_CIPHER, alg);
 		if (!vcrypto) {
-			pr_err("virtio_crypto: Could not find a virtio device in the system\n");
+			pr_err("virtio_crypto: Could not find a virtio device in the system or unsupported algo\n");
 			return -ENODEV;
 		}
 
@@ -571,57 +583,85 @@ static void virtio_crypto_ablkcipher_finalize_req(
 	virtcrypto_clear_request(&vc_sym_req->base);
 }
 
-static struct crypto_alg virtio_crypto_algs[] = { {
-	.cra_name = "cbc(aes)",
-	.cra_driver_name = "virtio_crypto_aes_cbc",
-	.cra_priority = 150,
-	.cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | CRYPTO_ALG_ASYNC,
-	.cra_blocksize = AES_BLOCK_SIZE,
-	.cra_ctxsize  = sizeof(struct virtio_crypto_ablkcipher_ctx),
-	.cra_alignmask = 0,
-	.cra_module = THIS_MODULE,
-	.cra_type = &crypto_ablkcipher_type,
-	.cra_init = virtio_crypto_ablkcipher_init,
-	.cra_exit = virtio_crypto_ablkcipher_exit,
-	.cra_u = {
-	   .ablkcipher = {
-			.setkey = virtio_crypto_ablkcipher_setkey,
-			.decrypt = virtio_crypto_ablkcipher_decrypt,
-			.encrypt = virtio_crypto_ablkcipher_encrypt,
-			.min_keysize = AES_MIN_KEY_SIZE,
-			.max_keysize = AES_MAX_KEY_SIZE,
-			.ivsize = AES_BLOCK_SIZE,
+static struct virtio_crypto_algo virtio_crypto_algs[] = { {
+	.algonum = VIRTIO_CRYPTO_CIPHER_AES_CBC,
+	.service = VIRTIO_CRYPTO_SERVICE_CIPHER,
+	.algo = {
+		.cra_name = "cbc(aes)",
+		.cra_driver_name = "virtio_crypto_aes_cbc",
+		.cra_priority = 150,
+		.cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | CRYPTO_ALG_ASYNC,
+		.cra_blocksize = AES_BLOCK_SIZE,
+		.cra_ctxsize  = sizeof(struct virtio_crypto_ablkcipher_ctx),
+		.cra_alignmask = 0,
+		.cra_module = THIS_MODULE,
+		.cra_type = &crypto_ablkcipher_type,
+		.cra_init = virtio_crypto_ablkcipher_init,
+		.cra_exit = virtio_crypto_ablkcipher_exit,
+		.cra_u = {
+			.ablkcipher = {
+				.setkey = virtio_crypto_ablkcipher_setkey,
+				.decrypt = virtio_crypto_ablkcipher_decrypt,
+				.encrypt = virtio_crypto_ablkcipher_encrypt,
+				.min_keysize = AES_MIN_KEY_SIZE,
+				.max_keysize = AES_MAX_KEY_SIZE,
+				.ivsize = AES_BLOCK_SIZE,
+			},
 		},
 	},
 } };
 
-int virtio_crypto_algs_register(void)
+int virtio_crypto_algs_register(struct virtio_crypto *vcrypto)
 {
 	int ret = 0;
+	int i = 0;
 
 	mutex_lock(&algs_lock);
-	if (++virtio_crypto_active_devs != 1)
-		goto unlock;
 
-	ret = crypto_register_algs(virtio_crypto_algs,
-			ARRAY_SIZE(virtio_crypto_algs));
-	if (ret)
-		virtio_crypto_active_devs--;
+	for (i = 0; i < ARRAY_SIZE(virtio_crypto_algs); i++) {
+
+		uint32_t service = virtio_crypto_algs[i].service;
+		uint32_t algonum = virtio_crypto_algs[i].algonum;
+
+		if (!virtcrypto_algo_is_supported(vcrypto, service, algonum))
+			continue;
+
+		if (virtio_crypto_algs[i].active_devs == 0) {
+			ret = crypto_register_alg(&virtio_crypto_algs[i].algo);
+			if (ret)
+				goto unlock;
+		}
+
+		virtio_crypto_algs[i].active_devs++;
+		dev_info(&vcrypto->vdev->dev, "Registered algo %s\n",
+			 virtio_crypto_algs[i].algo.cra_name);
+	}
 
 unlock:
 	mutex_unlock(&algs_lock);
 	return ret;
 }
 
-void virtio_crypto_algs_unregister(void)
+void virtio_crypto_algs_unregister(struct virtio_crypto *vcrypto)
 {
+	int i = 0;
+
 	mutex_lock(&algs_lock);
-	if (--virtio_crypto_active_devs != 0)
-		goto unlock;
 
-	crypto_unregister_algs(virtio_crypto_algs,
-			ARRAY_SIZE(virtio_crypto_algs));
+	for (i = 0; i < ARRAY_SIZE(virtio_crypto_algs); i++) {
+
+		uint32_t service = virtio_crypto_algs[i].service;
+		uint32_t algonum = virtio_crypto_algs[i].algonum;
+
+		if (virtio_crypto_algs[i].active_devs == 0 ||
+		    !virtcrypto_algo_is_supported(vcrypto, service, algonum))
+			continue;
+
+		if (virtio_crypto_algs[i].active_devs == 1)
+			crypto_unregister_alg(&virtio_crypto_algs[i].algo);
+
+		virtio_crypto_algs[i].active_devs--;
+	}
 
-unlock:
 	mutex_unlock(&algs_lock);
 }
diff --git a/drivers/crypto/virtio/virtio_crypto_common.h b/drivers/crypto/virtio/virtio_crypto_common.h
index 931a3bd..63ef7f7 100644
--- a/drivers/crypto/virtio/virtio_crypto_common.h
+++ b/drivers/crypto/virtio/virtio_crypto_common.h
@@ -116,7 +116,12 @@ int virtcrypto_dev_in_use(struct virtio_crypto *vcrypto_dev);
 int virtcrypto_dev_get(struct virtio_crypto *vcrypto_dev);
 void virtcrypto_dev_put(struct virtio_crypto *vcrypto_dev);
 int virtcrypto_dev_started(struct virtio_crypto *vcrypto_dev);
-struct virtio_crypto *virtcrypto_get_dev_node(int node);
+bool virtcrypto_algo_is_supported(struct virtio_crypto *vcrypto_dev,
+				  uint32_t service,
+				  uint32_t algo);
+struct virtio_crypto *virtcrypto_get_dev_node(int node,
+					      uint32_t service,
+					      uint32_t algo);
 int virtcrypto_dev_start(struct virtio_crypto *vcrypto);
 void virtcrypto_dev_stop(struct virtio_crypto *vcrypto);
 int virtio_crypto_ablkcipher_crypt_req(
@@ -136,7 +141,7 @@ static inline int virtio_crypto_get_current_node(void)
 	return node;
 }
 
-int virtio_crypto_algs_register(void);
-void virtio_crypto_algs_unregister(void);
+int virtio_crypto_algs_register(struct virtio_crypto *vcrypto);
+void virtio_crypto_algs_unregister(struct virtio_crypto *vcrypto);
 
 #endif /* _VIRTIO_CRYPTO_COMMON_H */
diff --git a/drivers/crypto/virtio/virtio_crypto_mgr.c b/drivers/crypto/virtio/virtio_crypto_mgr.c
index a69ff71..d70de3a 100644
--- a/drivers/crypto/virtio/virtio_crypto_mgr.c
+++ b/drivers/crypto/virtio/virtio_crypto_mgr.c
@@ -181,14 +181,20 @@ int virtcrypto_dev_started(struct virtio_crypto *vcrypto_dev)
 /*
  * virtcrypto_get_dev_node() - Get vcrypto_dev on the node.
  * @node:  Node id the driver works.
+ * @service: Crypto service that needs to be supported by the
+ *	      dev
+ * @algo: The algorithm number that needs to be supported by the
+ *	  dev
  *
- * Function returns the virtio crypto device used fewest on the node.
+ * Function returns the virtio crypto device used fewest on the node,
+ * and supports the given crypto service and algorithm.
  *
  * To be used by virtio crypto device specific drivers.
  *
  * Return: pointer to vcrypto_dev or NULL if not found.
  */
-struct virtio_crypto *virtcrypto_get_dev_node(int node)
+struct virtio_crypto *virtcrypto_get_dev_node(int node, uint32_t service,
+					      uint32_t algo)
 {
 	struct virtio_crypto *vcrypto_dev = NULL, *tmp_dev;
 	unsigned long best = ~0;
@@ -199,7 +205,8 @@ struct virtio_crypto *virtcrypto_get_dev_node(int node)
 
 		if ((node == dev_to_node(&tmp_dev->vdev->dev) ||
 		     dev_to_node(&tmp_dev->vdev->dev) < 0) &&
-		    virtcrypto_dev_started(tmp_dev)) {
+		    virtcrypto_dev_started(tmp_dev) &&
+		    virtcrypto_algo_is_supported(tmp_dev, service, algo)) {
 			ctr = atomic_read(&tmp_dev->ref_count);
 			if (best > ctr) {
 				vcrypto_dev = tmp_dev;
@@ -214,7 +221,9 @@ struct virtio_crypto *virtcrypto_get_dev_node(int node)
 		/* Get any started device */
 		list_for_each_entry(tmp_dev,
 				virtcrypto_devmgr_get_head(), list) {
-			if (virtcrypto_dev_started(tmp_dev)) {
+			if (virtcrypto_dev_started(tmp_dev) &&
+			    virtcrypto_algo_is_supported(tmp_dev,
+			    service, algo)) {
 				vcrypto_dev = tmp_dev;
 				break;
 			}
@@ -240,7 +249,7 @@ struct virtio_crypto *virtcrypto_get_dev_node(int node)
  */
 int virtcrypto_dev_start(struct virtio_crypto *vcrypto)
 {
-	if (virtio_crypto_algs_register()) {
+	if (virtio_crypto_algs_register(vcrypto)) {
 		pr_err("virtio_crypto: Failed to register crypto algs\n");
 		return -EFAULT;
 	}
@@ -260,5 +269,65 @@ int virtcrypto_dev_start(struct virtio_crypto *vcrypto)
  */
 void virtcrypto_dev_stop(struct virtio_crypto *vcrypto)
 {
-	virtio_crypto_algs_unregister();
+	virtio_crypto_algs_unregister(vcrypto);
+}
+
+/*
+ * vcrypto_algo_is_supported()
+ * @vcrypto: Pointer to virtio crypto device.
+ * @service: The bit number for service validate.
+ *	      See VIRTIO_CRYPTO_SERVICE_*
+ * @algo : The bit number for the algorithm to validate.
+ *
+ *
+ * Validate if the virtio crypto device supports a service and
+ * algo.
+ *
+ * Return true if device supports a service and algo.
+ */
+
+bool virtcrypto_algo_is_supported(struct virtio_crypto *vcrypto,
+				  uint32_t service,
+				  uint32_t algo)
+{
+	uint32_t service_mask = 1u << service;
+	uint32_t algo_mask = 0;
+	bool low = true;
+
+	if (algo > 31) {
+		algo -= 32;
+		low = false;
+	}
+
+	if (!(vcrypto->crypto_services & service_mask))
+		return false;
+
+	switch (service) {
+	case VIRTIO_CRYPTO_SERVICE_CIPHER:
+		if (low)
+			algo_mask = vcrypto->cipher_algo_l;
+		else
+			algo_mask = vcrypto->cipher_algo_h;
+		break;
+
+	case VIRTIO_CRYPTO_SERVICE_HASH:
+		algo_mask = vcrypto->hash_algo;
+		break;
+
+	case VIRTIO_CRYPTO_SERVICE_MAC:
+		if (low)
+			algo_mask = vcrypto->mac_algo_l;
+		else
+			algo_mask = vcrypto->mac_algo_h;
+		break;
+
+	case VIRTIO_CRYPTO_SERVICE_AEAD:
+		algo_mask = vcrypto->aead_algo;
+		break;
+	}
+
+	if (!(algo_mask & (1u << algo)))
+		return false;
+
+	return true;
 }
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 0/2] Detect & register virtio-crypto algos only if it can be supported by backend
  2018-06-13 20:38 [PATCH v2 0/2] Detect & register virtio-crypto algos only if it can be supported by backend Farhan Ali
  2018-06-13 20:38 ` [PATCH v2 1/2] crypto/virtio-crypto: Read crypto services and algorithm masks Farhan Ali
  2018-06-13 20:38 ` [PATCH v2 2/2] crypto/virtio-crypto: Register an algo only if it's supported Farhan Ali
@ 2018-06-19 13:26 ` Farhan Ali
  2018-06-19 14:08   ` Christian Borntraeger
  2 siblings, 1 reply; 8+ messages in thread
From: Farhan Ali @ 2018-06-19 13:26 UTC (permalink / raw)
  To: linux-kernel, kvm
  Cc: mst, qemu-devel, arei.gonglei, longpeng2, pasic, frankja, borntraeger

A polite ping :)

If no one has any more comments/feedback then I would like to how to 
merge these patches to the mainline kernel tree.

Thanks
Farhan

On 06/13/2018 04:38 PM, Farhan Ali wrote:
> Hi,
> 
> Currently the Linux virtio-crypto driver registers the crypto
> algorithm without verifying if the backend actually supports the
> algorithm.
> 
> This kernel patch series adds support for registering algorithm
> with Linux crypto layer, only if the algorithm is supported by
> the backend device. This also makes the driver more compliant with
> the virtio-crypto spec [1].
> 
> I would appreciate any feedback or comments on this.
> 
> Thank you
> Farhan
> 
> Reference
> ---------
> [1] Virtio crypto spec proposal https://lists.gnu.org/archive/html/qemu-devel/2017-12/msg00816.html
> 
> ChangeLog
> ---------
> v1 -> v2
>     - Modify comment as suggested by Arei (patch 1)
>     - Modify error message as suggested by Arei (patch 2)
> 
> 
> Farhan Ali (2):
>    crypto/virtio-crypto: Read crypto services and algorithm masks
>    crypto/virtio-crypto: Register an algo only if it's supported
> 
>   drivers/crypto/virtio/virtio_crypto_algs.c   | 112 ++++++++++++++++++---------
>   drivers/crypto/virtio/virtio_crypto_common.h |  25 +++++-
>   drivers/crypto/virtio/virtio_crypto_core.c   |  29 +++++++
>   drivers/crypto/virtio/virtio_crypto_mgr.c    |  81 +++++++++++++++++--
>   4 files changed, 202 insertions(+), 45 deletions(-)
> 


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 0/2] Detect & register virtio-crypto algos only if it can be supported by backend
  2018-06-19 13:26 ` [PATCH v2 0/2] Detect & register virtio-crypto algos only if it can be supported by backend Farhan Ali
@ 2018-06-19 14:08   ` Christian Borntraeger
  2018-06-19 14:32     ` Herbert Xu
  0 siblings, 1 reply; 8+ messages in thread
From: Christian Borntraeger @ 2018-06-19 14:08 UTC (permalink / raw)
  To: Farhan Ali, linux-kernel, kvm
  Cc: mst, qemu-devel, arei.gonglei, longpeng2, pasic, frankja,
	Jason Wang, Herbert Xu

On 06/19/2018 03:26 PM, Farhan Ali wrote:
> A polite ping :)
> 
> If no one has any more comments/feedback then I would like to how to merge these patches to the mainline kernel tree.

I think it should go via Michael Tsirkin or Jason Wang (Adding Jason).
Also adding Herbert Xu as FYI.


I have not looked into the details of the patch, but I like the idea.
Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>



> 
> Thanks
> Farhan
> 
> On 06/13/2018 04:38 PM, Farhan Ali wrote:
>> Hi,
>>
>> Currently the Linux virtio-crypto driver registers the crypto
>> algorithm without verifying if the backend actually supports the
>> algorithm.
>>
>> This kernel patch series adds support for registering algorithm
>> with Linux crypto layer, only if the algorithm is supported by
>> the backend device. This also makes the driver more compliant with
>> the virtio-crypto spec [1].
>>
>> I would appreciate any feedback or comments on this.
>>
>> Thank you
>> Farhan
>>
>> Reference
>> ---------
>> [1] Virtio crypto spec proposal https://lists.gnu.org/archive/html/qemu-devel/2017-12/msg00816.html
>>
>> ChangeLog
>> ---------
>> v1 -> v2
>>     - Modify comment as suggested by Arei (patch 1)
>>     - Modify error message as suggested by Arei (patch 2)
>>
>>
>> Farhan Ali (2):
>>    crypto/virtio-crypto: Read crypto services and algorithm masks
>>    crypto/virtio-crypto: Register an algo only if it's supported
>>
>>   drivers/crypto/virtio/virtio_crypto_algs.c   | 112 ++++++++++++++++++---------
>>   drivers/crypto/virtio/virtio_crypto_common.h |  25 +++++-
>>   drivers/crypto/virtio/virtio_crypto_core.c   |  29 +++++++
>>   drivers/crypto/virtio/virtio_crypto_mgr.c    |  81 +++++++++++++++++--
>>   4 files changed, 202 insertions(+), 45 deletions(-)
>>
> 


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 0/2] Detect & register virtio-crypto algos only if it can be supported by backend
  2018-06-19 14:08   ` Christian Borntraeger
@ 2018-06-19 14:32     ` Herbert Xu
  2018-06-19 14:57       ` Farhan Ali
  0 siblings, 1 reply; 8+ messages in thread
From: Herbert Xu @ 2018-06-19 14:32 UTC (permalink / raw)
  To: Christian Borntraeger
  Cc: Farhan Ali, linux-kernel, kvm, mst, qemu-devel, arei.gonglei,
	longpeng2, pasic, frankja, Jason Wang

On Tue, Jun 19, 2018 at 04:08:05PM +0200, Christian Borntraeger wrote:
> On 06/19/2018 03:26 PM, Farhan Ali wrote:
> > A polite ping :)
> > 
> > If no one has any more comments/feedback then I would like to how to merge these patches to the mainline kernel tree.
> 
> I think it should go via Michael Tsirkin or Jason Wang (Adding Jason).
> Also adding Herbert Xu as FYI.
> 
> 
> I have not looked into the details of the patch, but I like the idea.
> Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>

Please post crypto patches to linux-crypto.

Thanks,
-- 
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 0/2] Detect & register virtio-crypto algos only if it can be supported by backend
  2018-06-19 14:32     ` Herbert Xu
@ 2018-06-19 14:57       ` Farhan Ali
  2018-06-19 15:30         ` Michael S. Tsirkin
  0 siblings, 1 reply; 8+ messages in thread
From: Farhan Ali @ 2018-06-19 14:57 UTC (permalink / raw)
  To: Herbert Xu, Christian Borntraeger
  Cc: linux-kernel, kvm, mst, qemu-devel, arei.gonglei, longpeng2,
	pasic, frankja, Jason Wang, linux-crypto



On 06/19/2018 10:32 AM, Herbert Xu wrote:
> On Tue, Jun 19, 2018 at 04:08:05PM +0200, Christian Borntraeger wrote:
>> On 06/19/2018 03:26 PM, Farhan Ali wrote:
>>> A polite ping :)
>>>
>>> If no one has any more comments/feedback then I would like to how to merge these patches to the mainline kernel tree.
>>
>> I think it should go via Michael Tsirkin or Jason Wang (Adding Jason).
>> Also adding Herbert Xu as FYI.
>>
>>
>> I have not looked into the details of the patch, but I like the idea.
>> Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
> 
> Please post crypto patches to linux-crypto.
> 
> Thanks,
> 

I have cc'ed linux-crypto folks. Sorry I missed them

Thanks
Farhan


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 0/2] Detect & register virtio-crypto algos only if it can be supported by backend
  2018-06-19 14:57       ` Farhan Ali
@ 2018-06-19 15:30         ` Michael S. Tsirkin
  0 siblings, 0 replies; 8+ messages in thread
From: Michael S. Tsirkin @ 2018-06-19 15:30 UTC (permalink / raw)
  To: Farhan Ali
  Cc: Herbert Xu, Christian Borntraeger, linux-kernel, kvm, qemu-devel,
	arei.gonglei, longpeng2, pasic, frankja, Jason Wang,
	linux-crypto

On Tue, Jun 19, 2018 at 10:57:54AM -0400, Farhan Ali wrote:
> 
> 
> On 06/19/2018 10:32 AM, Herbert Xu wrote:
> > On Tue, Jun 19, 2018 at 04:08:05PM +0200, Christian Borntraeger wrote:
> > > On 06/19/2018 03:26 PM, Farhan Ali wrote:
> > > > A polite ping :)
> > > > 
> > > > If no one has any more comments/feedback then I would like to how to merge these patches to the mainline kernel tree.
> > > 
> > > I think it should go via Michael Tsirkin or Jason Wang (Adding Jason).
> > > Also adding Herbert Xu as FYI.
> > > 
> > > 
> > > I have not looked into the details of the patch, but I like the idea.
> > > Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
> > 
> > Please post crypto patches to linux-crypto.
> > 
> > Thanks,
> > 
> 
> I have cc'ed linux-crypto folks. Sorry I missed them
> 
> Thanks
> Farhan

Yes but not just the header. you want to repost the whole
patchset.

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2018-06-19 15:30 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-06-13 20:38 [PATCH v2 0/2] Detect & register virtio-crypto algos only if it can be supported by backend Farhan Ali
2018-06-13 20:38 ` [PATCH v2 1/2] crypto/virtio-crypto: Read crypto services and algorithm masks Farhan Ali
2018-06-13 20:38 ` [PATCH v2 2/2] crypto/virtio-crypto: Register an algo only if it's supported Farhan Ali
2018-06-19 13:26 ` [PATCH v2 0/2] Detect & register virtio-crypto algos only if it can be supported by backend Farhan Ali
2018-06-19 14:08   ` Christian Borntraeger
2018-06-19 14:32     ` Herbert Xu
2018-06-19 14:57       ` Farhan Ali
2018-06-19 15:30         ` Michael S. Tsirkin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).