diff mbox series

[1/4] media: lmedm04: Add missing usb_free_urb to free, interrupt urb

Message ID e967120b-eceb-f841-075c-aa2c15ada987@gmail.com (mailing list archive)
State New, archived
Headers show
Series [1/4] media: lmedm04: Add missing usb_free_urb to free, interrupt urb | expand

Commit Message

Malcolm Priestley Nov. 29, 2018, 10:29 p.m. UTC
The interrupt urb is killed but never freed add the function

Cc: stable@vger.kernel.org
Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
---
 drivers/media/usb/dvb-usb-v2/lmedm04.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Sean Young Dec. 4, 2018, 6:51 p.m. UTC | #1
On Thu, Nov 29, 2018 at 10:29:31PM +0000, Malcolm Priestley wrote:
> The interrupt urb is killed but never freed add the function
> 
> Cc: stable@vger.kernel.org
> Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
> ---
>  drivers/media/usb/dvb-usb-v2/lmedm04.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/media/usb/dvb-usb-v2/lmedm04.c b/drivers/media/usb/dvb-usb-v2/lmedm04.c
> index f109c04f05ae..8b405e131439 100644
> --- a/drivers/media/usb/dvb-usb-v2/lmedm04.c
> +++ b/drivers/media/usb/dvb-usb-v2/lmedm04.c
> @@ -1264,6 +1264,7 @@ static void *lme2510_exit_int(struct dvb_usb_device *d)
>  
>  	if (st->lme_urb != NULL) {
>  		usb_kill_urb(st->lme_urb);
> +		usb_free_urb(st->lme_urb);

Now st->lme_urb is a stale pointer.

>  		usb_free_coherent(d->udev, 128, st->buffer,
>  				  st->lme_urb->transfer_dma);

And now you're following it.

>  		info("Interrupt Service Stopped");
> -- 
> 2.19.1
diff mbox series

Patch

diff --git a/drivers/media/usb/dvb-usb-v2/lmedm04.c b/drivers/media/usb/dvb-usb-v2/lmedm04.c
index f109c04f05ae..8b405e131439 100644
--- a/drivers/media/usb/dvb-usb-v2/lmedm04.c
+++ b/drivers/media/usb/dvb-usb-v2/lmedm04.c
@@ -1264,6 +1264,7 @@  static void *lme2510_exit_int(struct dvb_usb_device *d)
 
 	if (st->lme_urb != NULL) {
 		usb_kill_urb(st->lme_urb);
+		usb_free_urb(st->lme_urb);
 		usb_free_coherent(d->udev, 128, st->buffer,
 				  st->lme_urb->transfer_dma);
 		info("Interrupt Service Stopped");