All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dongliang Mu <mudongliangabcd@gmail.com>
To: Hangyu Hua <hbh25y@gmail.com>
Cc: Greg KH <gregkh@linuxfoundation.org>,
	Oliver Neukum <oneukum@suse.com>,
	linux-usb@vger.kernel.org,
	linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2] usb: misc: fix improper handling of refcount in uss720_probe()
Date: Thu, 7 Apr 2022 11:09:41 +0800	[thread overview]
Message-ID: <CAD-N9QV27nJW=_goZKB0666Nq1pNphbgoHeYn_FmSkkJh9vyKg@mail.gmail.com> (raw)
In-Reply-To: <20220407024001.11761-1-hbh25y@gmail.com>

On Thu, Apr 7, 2022 at 10:40 AM Hangyu Hua <hbh25y@gmail.com> wrote:
>
> usb_put_dev shouldn't be called when uss720_probe succeeds because of
> priv->usbdev. At the same time, priv->usbdev shouldn't be set to NULL
> before destroy_priv in uss720_disconnect because usb_put_dev is in
> destroy_priv.
>
> Fix this by moving priv->usbdev = NULL after usb_put_dev.

Hi Hangyu,

good catch as priv->usbdev is still used after the probe function.

I agree with this patch.

Reviewed-by: Dongliang Mu <mudongliangabcd@gmail.com>

>
> Fixes: dcb4b8ad6a44 ("misc/uss720: fix memory leak in uss720_probe")
> Signed-off-by: Hangyu Hua <hbh25y@gmail.com>
> ---
>
> v2: fix a stupid UAF in the previous version.
>
>  drivers/usb/misc/uss720.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/usb/misc/uss720.c b/drivers/usb/misc/uss720.c
> index 748139d26263..0be8efcda15d 100644
> --- a/drivers/usb/misc/uss720.c
> +++ b/drivers/usb/misc/uss720.c
> @@ -71,6 +71,7 @@ static void destroy_priv(struct kref *kref)
>
>         dev_dbg(&priv->usbdev->dev, "destroying priv datastructure\n");
>         usb_put_dev(priv->usbdev);
> +       priv->usbdev = NULL;
>         kfree(priv);
>  }
>
> @@ -736,7 +737,6 @@ static int uss720_probe(struct usb_interface *intf,
>         parport_announce_port(pp);
>
>         usb_set_intfdata(intf, pp);
> -       usb_put_dev(usbdev);
>         return 0;
>
>  probe_abort:
> @@ -754,7 +754,6 @@ static void uss720_disconnect(struct usb_interface *intf)
>         usb_set_intfdata(intf, NULL);
>         if (pp) {
>                 priv = pp->private_data;
> -               priv->usbdev = NULL;
>                 priv->pp = NULL;
>                 dev_dbg(&intf->dev, "parport_remove_port\n");
>                 parport_remove_port(pp);
> --
> 2.25.1
>

      reply	other threads:[~2022-04-07  3:10 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-07  2:40 [PATCH v2] usb: misc: fix improper handling of refcount in uss720_probe() Hangyu Hua
2022-04-07  3:09 ` Dongliang Mu [this message]

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='CAD-N9QV27nJW=_goZKB0666Nq1pNphbgoHeYn_FmSkkJh9vyKg@mail.gmail.com' \
    --to=mudongliangabcd@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hbh25y@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=oneukum@suse.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.