Re: [External] [PATCH v3 4/5] virtio-crypto: adjust dst_len at ops callback

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> On Apr 21, 2022, at 9:46 PM, Gonglei (Arei) <arei.gonglei@xxxxxxxxxx> wrote:
> 
> 
> 
>> -----Original Message-----
>> From: zhenwei pi [mailto:pizhenwei@xxxxxxxxxxxxx]
>> Sent: Thursday, April 21, 2022 6:40 PM
>> To: Gonglei (Arei) <arei.gonglei@xxxxxxxxxx>; mst@xxxxxxxxxx
>> Cc: jasowang@xxxxxxxxxx; herbert@xxxxxxxxxxxxxxxxxxx;
>> linux-kernel@xxxxxxxxxxxxxxx; virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx;
>> linux-crypto@xxxxxxxxxxxxxxx; helei.sig11@xxxxxxxxxxxxx;
>> davem@xxxxxxxxxxxxx; zhenwei pi <pizhenwei@xxxxxxxxxxxxx>
>> Subject: [PATCH v3 4/5] virtio-crypto: adjust dst_len at ops callback
>> 
>> From: lei he <helei.sig11@xxxxxxxxxxxxx>
>> 
>> For some akcipher operations(eg, decryption of pkcs1pad(rsa)), the length of
>> returned result maybe less than akcipher_req->dst_len, we need to recalculate
>> the actual dst_len through the virt-queue protocol.
>> 
> OK ...
> 
>> Cc: Michael S. Tsirkin <mst@xxxxxxxxxx>
>> Cc: Jason Wang <jasowang@xxxxxxxxxx>
>> Cc: Gonglei <arei.gonglei@xxxxxxxxxx>
>> Signed-off-by: lei he <helei.sig11@xxxxxxxxxxxxx>
>> Signed-off-by: zhenwei pi <pizhenwei@xxxxxxxxxxxxx>
>> ---
>> drivers/crypto/virtio/virtio_crypto_akcipher_algs.c | 5 ++++-
>> 1 file changed, 4 insertions(+), 1 deletion(-)
>> 
>> diff --git a/drivers/crypto/virtio/virtio_crypto_akcipher_algs.c
>> b/drivers/crypto/virtio/virtio_crypto_akcipher_algs.c
>> index 9561bc2df62b..82db86e088c2 100644
>> --- a/drivers/crypto/virtio/virtio_crypto_akcipher_algs.c
>> +++ b/drivers/crypto/virtio/virtio_crypto_akcipher_algs.c
>> @@ -90,9 +90,12 @@ static void
>> virtio_crypto_dataq_akcipher_callback(struct virtio_crypto_request *
>> 	}
>> 
>> 	akcipher_req = vc_akcipher_req->akcipher_req;
>> -	if (vc_akcipher_req->opcode != VIRTIO_CRYPTO_AKCIPHER_VERIFY)
>> +	if (vc_akcipher_req->opcode != VIRTIO_CRYPTO_AKCIPHER_VERIFY) {
>> +		/* actuall length maybe less than dst buffer */
>> +		akcipher_req->dst_len = len - sizeof(vc_req->status);
> 
> ...but why minus sizeof(vc_req->status)?

The len here indicates the total length of data written by the device. for encrypt/decrypt/sign,
the virt crypto device writes two parts of data: dst_data and status(virtio_crypto_inhdr). 
To obtain dst_len, the size of status needs to be subtracted.

> 
> 
> Regards,
> -Gonglei





[Index of Archives]     [Kernel]     [Gnu Classpath]     [Gnu Crypto]     [DM Crypt]     [Netfilter]     [Bugtraq]

  Powered by Linux