Re: [PATCH] media: usb: fix memory leak in stk_camera_probe

From: Dan Carpenter
Date: Thu Sep 02 2021 - 10:19:59 EST


On Thu, Sep 02, 2021 at 06:23:36PM +0800, Dongliang Mu wrote:
> On Fri, Jul 23, 2021 at 6:11 PM Dongliang Mu <mudongliangabcd@xxxxxxxxx> wrote:
> >
> > On Wed, Jul 14, 2021 at 11:23 AM Dongliang Mu <mudongliangabcd@xxxxxxxxx> wrote:
> > >
> > > stk_camera_probe mistakenly execute usb_get_intf and increase the
> > > refcount of interface->dev.
> > >
> > > Fix this by removing the execution of usb_get_intf.
> >
> > Any idea about this patch?
>
> +cc Dan Carpenter, gregkh
>
> There is no reply in this thread in one month. Can someone give some
> feedback on this patch?
>
> >
> > >
> > > Reported-by: Dongliang Mu <mudongliangabcd@xxxxxxxxx>
> > > Fixes: 0aa77f6c2954 ("[media] move the remaining USB drivers to drivers/media/usb")
> > > Signed-off-by: Dongliang Mu <mudongliangabcd@xxxxxxxxx>
> > > ---
> > > drivers/media/usb/stkwebcam/stk-webcam.c | 1 -
> > > 1 file changed, 1 deletion(-)
> > >
> > > diff --git a/drivers/media/usb/stkwebcam/stk-webcam.c b/drivers/media/usb/stkwebcam/stk-webcam.c
> > > index a45d464427c4..5bd8e85b9452 100644
> > > --- a/drivers/media/usb/stkwebcam/stk-webcam.c
> > > +++ b/drivers/media/usb/stkwebcam/stk-webcam.c
> > > @@ -1311,7 +1311,6 @@ static int stk_camera_probe(struct usb_interface *interface,
> > >
> > > dev->udev = udev;
> > > dev->interface = interface;
> > > - usb_get_intf(interface);


The patch is wrong. We're storing a reference to "interface".

dev->interface = interface;

So we need to boost the refcount of interface. Pavel Skripkin was on
the right patch but you need to add a:

usb_put_intf(interface);

to the stk_camera_disconnect() function as you sort of mentioned.
That's the correct fix.

regards,
dan carpenter