lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <0a675c21c1dc4e699d542c2f4f92f729@huawei.com>
Date:   Tue, 16 Aug 2022 09:15:44 +0000
From:   "Gonglei (Arei)" <arei.gonglei@...wei.com>
To:     "Michael S. Tsirkin" <mst@...hat.com>,
        Lei He <helei.sig11@...edance.com>
CC:     "herbert@...dor.apana.org.au" <herbert@...dor.apana.org.au>,
        "virtualization@...ts.linux-foundation.org" 
        <virtualization@...ts.linux-foundation.org>,
        "linux-crypto@...r.kernel.org" <linux-crypto@...r.kernel.org>,
        "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
        "pizhenwei@...edance.com" <pizhenwei@...edance.com>
Subject: RE: [PATCH] crypto-virtio: fix memory-leak



> -----Original Message-----
> From: Michael S. Tsirkin [mailto:mst@...hat.com]
> Sent: Tuesday, August 16, 2022 4:43 PM
> To: Lei He <helei.sig11@...edance.com>
> Cc: Gonglei (Arei) <arei.gonglei@...wei.com>;
> herbert@...dor.apana.org.au; virtualization@...ts.linux-foundation.org;
> linux-crypto@...r.kernel.org; linux-kernel@...r.kernel.org;
> pizhenwei@...edance.com
> Subject: Re: [PATCH] crypto-virtio: fix memory-leak
> 

Pls 's/crypto-virtio/virtio-crypto' in order to keep consistency.

Reviewed-by: Gonglei <arei.gonglei@...wei.com>

Regards,
-Gonglei

> On Tue, Aug 16, 2022 at 03:59:16PM +0800, Lei He wrote:
> > From: lei he <helei.sig11@...edance.com>
> >
> > Fix memory-leak for virtio-crypto akcipher request, this problem is
> > introduced by 59ca6c93387d3(virtio-crypto: implement RSA algorithm).
> > The leak can be reproduced and tested with the following script inside
> > virtual machine:
> >
> > #!/bin/bash
> >
> > LOOP_TIMES=10000
> >
> > # required module: pkcs8_key_parser, virtio_crypto modprobe
> > pkcs8_key_parser # if CONFIG_PKCS8_PRIVATE_KEY_PARSER=m modprobe
> > virtio_crypto # if CONFIG_CRYPTO_DEV_VIRTIO=m rm -rf /tmp/data dd
> > if=/dev/random of=/tmp/data count=1 bs=230
> >
> > # generate private key and self-signed cert openssl req -nodes -x509
> > -newkey rsa:2048 -keyout key.pem \
> > 		-outform der -out cert.der  \
> > 		-subj
> "/C=CN/ST=GD/L=SZ/O=vihoo/OU=dev/CN=always.com/emailAddress=yy@
> always.com"
> > # convert private key from pem to der
> > openssl pkcs8 -in key.pem -topk8 -nocrypt -outform DER -out key.der
> >
> > # add key
> > PRIV_KEY_ID=`cat key.der | keyctl padd asymmetric test_priv_key @s`
> > echo "priv key id = "$PRIV_KEY_ID PUB_KEY_ID=`cat cert.der | keyctl
> > padd asymmetric test_pub_key @s` echo "pub key id = "$PUB_KEY_ID
> >
> > # query key
> > keyctl pkey_query $PRIV_KEY_ID 0
> > keyctl pkey_query $PUB_KEY_ID 0
> >
> > # here we only run pkey_encrypt becasuse it is the fastest interface
> > function bench_pub() {
> > 	keyctl pkey_encrypt $PUB_KEY_ID 0 /tmp/data
> enc=pkcs1 >/tmp/enc.pub }
> >
> > # do bench_pub in loop to obtain the memory leak for (( i = 0; i <
> > ${LOOP_TIMES}; ++i )); do
> > 	bench_pub
> > done
> >
> > Signed-off-by: lei he <helei.sig11@...edance.com>
> 
> trash below pls drop.
> 
> 
> > # Please enter the commit message for your changes. Lines starting #
> > with '#' will be kept; you may remove them yourself if you want to.
> > # An empty message aborts the commit.
> > #
> > # Date:      Tue Aug 16 11:53:30 2022 +0800
> > #
> > # On branch master
> > # Your branch is ahead of 'origin/master' by 1 commit.
> > #   (use "git push" to publish your local commits)
> > #
> > # Changes to be committed:
> > #	modified:   drivers/crypto/virtio/virtio_crypto_akcipher_algs.c
> > #
> > # Untracked files:
> > #	cert.der
> > #	key.der
> > #	key.pem
> > #
> >
> > # Please enter the commit message for your changes. Lines starting #
> > with '#' will be kept; you may remove them yourself if you want to.
> > # An empty message aborts the commit.
> > #
> > # Date:      Tue Aug 16 11:53:30 2022 +0800
> > #
> > # On branch master
> > # Your branch is ahead of 'origin/master' by 1 commit.
> > #   (use "git push" to publish your local commits)
> > #
> > # Changes to be committed:
> > #	modified:   drivers/crypto/virtio/virtio_crypto_akcipher_algs.c
> > #
> > # Untracked files:
> > #	cert.der
> > #	key.der
> > #	key.pem
> > #
> >
> > # Please enter the commit message for your changes. Lines starting #
> > with '#' will be kept; you may remove them yourself if you want to.
> > # An empty message aborts the commit.
> > #
> > # Date:      Tue Aug 16 11:53:30 2022 +0800
> > #
> > # On branch master
> > # Your branch is ahead of 'origin/master' by 1 commit.
> > #   (use "git push" to publish your local commits)
> > #
> > # Changes to be committed:
> > #	modified:   drivers/crypto/virtio/virtio_crypto_akcipher_algs.c
> > #
> > # Untracked files:
> > #	cert.der
> > #	key.der
> > #	key.pem
> > #
> > ---
> 
> with commit log fixed:
> 
> Acked-by: Michael S. Tsirkin <mst@...hat.com>
> 
> >  drivers/crypto/virtio/virtio_crypto_akcipher_algs.c | 4 ++++
> >  1 file changed, 4 insertions(+)
> >
> > diff --git a/drivers/crypto/virtio/virtio_crypto_akcipher_algs.c
> > b/drivers/crypto/virtio/virtio_crypto_akcipher_algs.c
> > index 2a60d0525cde..168195672e2e 100644
> > --- a/drivers/crypto/virtio/virtio_crypto_akcipher_algs.c
> > +++ b/drivers/crypto/virtio/virtio_crypto_akcipher_algs.c
> > @@ -56,6 +56,10 @@ static void virtio_crypto_akcipher_finalize_req(
> >  	struct virtio_crypto_akcipher_request *vc_akcipher_req,
> >  	struct akcipher_request *req, int err)  {
> > +	kfree(vc_akcipher_req->src_buf);
> > +	kfree(vc_akcipher_req->dst_buf);
> > +	vc_akcipher_req->src_buf = NULL;
> > +	vc_akcipher_req->dst_buf = NULL;
> >  	virtcrypto_clear_request(&vc_akcipher_req->base);
> >
> >
> > crypto_finalize_akcipher_request(vc_akcipher_req->base.dataq->engine,
> > req, err);
> > --
> > 2.20.1

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ