All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jarkko Sakkinen <jarkko@kernel.org>
To: "Guozihua (Scott)" <guozihua@huawei.com>
Cc: linux-integrity@vger.kernel.org, wangweiyang2@huawei.com,
	xiujianfeng@huawei.com, weiyongjun1@huawei.com,
	peterhuewe@gmx.de, jgg@ziepe.ca, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] tpm: Fix memory leak in tpmm_chip_alloc
Date: Fri, 11 Mar 2022 18:34:10 +0200	[thread overview]
Message-ID: <22e6a4b4b01a219282e4da6a941eaad68897841f.camel@kernel.org> (raw)
In-Reply-To: <aa1b89b5-d13e-3dc8-ec2c-62823ea10021@huawei.com>

On Thu, 2022-03-10 at 11:33 +0800, Guozihua (Scott) wrote:
> 
> 
> On 2022/3/7 21:45, Jarkko Sakkinen wrote:
> > On Mon, Mar 07, 2022 at 06:48:27PM +0800, GUO Zihua wrote:
> > > Fix a memory leak in tpmm_chip_alloc. devm_add_action_or_reset would
> > > call put_device on error, while tpm->devs is left untouched. Call
> > > put_device on tpm->devs as well if devm_add_action_or_reset returns an
> > > error.
> > > 
> > > Fixes: fdc915f7f719 ("tpm: expose spaces via a device link /dev/tpmrm")
> > > Signed-off-by: GUO Zihua <guozihua@huawei.com>
> > > ---
> > >   drivers/char/tpm/tpm-chip.c | 13 +++++++++----
> > >   1 file changed, 9 insertions(+), 4 deletions(-)
> > > 
> > > diff --git a/drivers/char/tpm/tpm-chip.c b/drivers/char/tpm/tpm-chip.c
> > > index b009e7479b70..0a92334e8c40 100644
> > > --- a/drivers/char/tpm/tpm-chip.c
> > > +++ b/drivers/char/tpm/tpm-chip.c
> > > @@ -308,6 +308,12 @@ static int tpm_class_shutdown(struct device *dev)
> > >         return 0;
> > >   }
> > >   
> > > +static void tpm_chip_free(struct tpm_chip *chip)
> > > +{
> > > +       put_device(&chip->devs);
> > > +       put_device(&chip->dev);
> > > +}
> > > +
> > >   /**
> > >    * tpm_chip_alloc() - allocate a new struct tpm_chip instance
> > >    * @pdev: device to which the chip is associated
> > > @@ -396,8 +402,7 @@ struct tpm_chip *tpm_chip_alloc(struct device *pdev,
> > >         return chip;
> > >   
> > >   out:
> > > -       put_device(&chip->devs);
> > > -       put_device(&chip->dev);
> > > +       tpm_chip_free(chip);
> > >         return ERR_PTR(rc);
> > >   }
> > >   EXPORT_SYMBOL_GPL(tpm_chip_alloc);
> > > @@ -420,8 +425,8 @@ struct tpm_chip *tpmm_chip_alloc(struct device *pdev,
> > >                 return chip;
> > >   
> > >         rc = devm_add_action_or_reset(pdev,
> > > -                                     (void (*)(void *)) put_device,
> > > -                                     &chip->dev);
> > > +                                     (void (*)(void *)) tpm_chip_free,
> > > +                                     chip);
> > >         if (rc)
> > >                 return ERR_PTR(rc);
> > >   
> > > -- 
> > > 2.17.1
> > > 
> > 
> > Please test against the latest in
> > 
> > git://git.kernel.org/pub/scm/linux/kernel/git/jarkko/linux-tpmdd.git
> > 
> > and share your results.
> > 
> > BR, Jarkko
> > .
> 
> Hi Jarkko,
> 
> I'll do that. Do we have a test set for TPM? Or do we just build and run 
> it and see if everything works as expected?
> 
> This is an error handling optimization BTW.

There is kselftest in tools/testing/kselftes/tpm2 that you can use
but do not have to.

BR, Jarkko



  reply	other threads:[~2022-03-11 16:35 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-07 10:48 [PATCH] tpm: Fix memory leak in tpmm_chip_alloc GUO Zihua
2022-03-07 13:45 ` Jarkko Sakkinen
2022-03-10  3:33   ` Guozihua (Scott)
2022-03-11 16:34     ` Jarkko Sakkinen [this message]
2022-03-14  7:10       ` Guozihua (Scott)
2022-03-15  3:11       ` Guozihua (Scott)
2022-03-14 16:37 ` Jason Gunthorpe
2022-03-15  1:55   ` Guozihua (Scott)
2022-03-17  7:33     ` Jarkko Sakkinen
2022-03-17  7:31   ` Jarkko Sakkinen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=22e6a4b4b01a219282e4da6a941eaad68897841f.camel@kernel.org \
    --to=jarkko@kernel.org \
    --cc=guozihua@huawei.com \
    --cc=jgg@ziepe.ca \
    --cc=linux-integrity@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=peterhuewe@gmx.de \
    --cc=wangweiyang2@huawei.com \
    --cc=weiyongjun1@huawei.com \
    --cc=xiujianfeng@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.