linux-usb.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: zhangqilong <zhangqilong3@huawei.com>
To: Bastien Nocera <hadess@hadess.net>
Cc: "gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
	"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>
Subject: 答复: [PATCH] USB: apple-mfi-fastcharge: fix reference leak in apple_mfi_fc_set_property
Date: Sat, 31 Oct 2020 03:29:31 +0000	[thread overview]
Message-ID: <02c9ff38b0c246c498a5e80dde5fb62b@huawei.com> (raw)
In-Reply-To: <0145bd8636cb9f384e5e9b7149a7d9a90bc56825.camel@hadess.net>

> 
> On Fri, 2020-10-30 at 23:45 +0800, Zhang Qilong wrote:
> > pm_runtime_get_sync() will increment pm usage counter even it failed.
> > Forgetting to call pm_runtime_put_noidle will result in reference leak
> > in apple_mfi_fc_set_property, so we should fix it.
> >
> > Signed-off-by: Zhang Qilong <zhangqilong3@huawei.com>
> 
> It looks correct, but I don't know whether it's necessary.
> There's a boatload of users of that API that don't even check for the
> get_sync() retval, and loads more where it's checked but never acted upon.
> 
> Do you intend to fix all those as well?
> 

pm_runtime_get_sync will increase the reference count at first, and it will resume the device
later. If runtime of the device is active or has error(something else....), resume will failed. If we
do not call put operation to decrease the reference, the result is that this device cannot enter
the idle state and always stay busy or other non-idle state, maybe it consumes more power or
raise additional errors... And I'll try to fix them : )

Thanks, best wish!

Zhang Qilong

> > ---
> >  drivers/usb/misc/apple-mfi-fastcharge.c | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/usb/misc/apple-mfi-fastcharge.c
> > b/drivers/usb/misc/apple-mfi-fastcharge.c
> > index b403094a6b3a..9e1ad4536e36 100644
> > --- a/drivers/usb/misc/apple-mfi-fastcharge.c
> > +++ b/drivers/usb/misc/apple-mfi-fastcharge.c
> > @@ -120,8 +120,10 @@ static int apple_mfi_fc_set_property(struct
> > power_supply *psy,
> >         dev_dbg(&mfi->udev->dev, "prop: %d\n", psp);
> >
> >         ret = pm_runtime_get_sync(&mfi->udev->dev);
> > -       if (ret < 0)
> > +       if (ret < 0) {
> > +               pm_runtime_put_noidle(&mfi->udev->dev);
> >                 return ret;
> > +       }
> >
> >         switch (psp) {
> >         case POWER_SUPPLY_PROP_CHARGE_TYPE:
> 


  reply	other threads:[~2020-10-31  3:29 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-30 15:45 [PATCH] USB: apple-mfi-fastcharge: fix reference leak in apple_mfi_fc_set_property Zhang Qilong
2020-10-30 15:56 ` Bastien Nocera
2020-10-31  3:29   ` zhangqilong [this message]
2020-10-30 18:11 ` Sergei Shtylyov

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=02c9ff38b0c246c498a5e80dde5fb62b@huawei.com \
    --to=zhangqilong3@huawei.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hadess@hadess.net \
    --cc=linux-usb@vger.kernel.org \
    /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 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).