Message ID | a54f1631-4279-f580-9a61-75472b2b90e2@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 |
On Thu, Nov 29, 2018 at 10:30:15PM +0000, Malcolm Priestley wrote: > Interrupt is always present throught life time of > there is no dma element move this buffer to private > area of driver. > > Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> > --- > drivers/media/usb/dvb-usb-v2/lmedm04.c | 26 +++++++++----------------- > 1 file changed, 9 insertions(+), 17 deletions(-) > > diff --git a/drivers/media/usb/dvb-usb-v2/lmedm04.c b/drivers/media/usb/dvb-usb-v2/lmedm04.c > index 8fb53b83c914..7b1aaed259db 100644 > --- a/drivers/media/usb/dvb-usb-v2/lmedm04.c > +++ b/drivers/media/usb/dvb-usb-v2/lmedm04.c > @@ -134,7 +134,7 @@ struct lme2510_state { > u8 stream_on; > u8 pid_size; > u8 pid_off; > - void *buffer; > + u8 int_buffer[128]; > struct urb *lme_urb; > u8 usb_buffer[64]; > /* Frontend original calls */ > @@ -408,20 +408,14 @@ static int lme2510_int_read(struct dvb_usb_adapter *adap) > if (lme_int->lme_urb == NULL) > return -ENOMEM; > > - lme_int->buffer = usb_alloc_coherent(d->udev, 128, GFP_ATOMIC, > - &lme_int->lme_urb->transfer_dma); > - The buffer was allocated with usb_alloc_coherent, however now it is allocated with kmalloc. > - if (lme_int->buffer == NULL) > - return -ENOMEM; > - > usb_fill_int_urb(lme_int->lme_urb, > - d->udev, > - usb_rcvintpipe(d->udev, 0xa), > - lme_int->buffer, > - 128, > - lme2510_int_response, > - adap, > - 8); > + d->udev, > + usb_rcvintpipe(d->udev, 0xa), > + lme_int->int_buffer, > + sizeof(lme_int->int_buffer), > + lme2510_int_response, > + adap, > + 8); > > /* Quirk of pipe reporting PIPE_BULK but behaves as interrupt */ > ep = usb_pipe_endpoint(d->udev, lme_int->lme_urb->pipe); On line 408: lme_int->lme_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; This requires usb_alloc_coherent(). > @@ -1245,11 +1239,9 @@ static void lme2510_exit(struct dvb_usb_device *d) > lme2510_kill_urb(&adap->stream); > } > > - if (st->lme_urb != NULL) { > + if (st->lme_urb) { > 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"); > } > } > -- > 2.19.1
diff --git a/drivers/media/usb/dvb-usb-v2/lmedm04.c b/drivers/media/usb/dvb-usb-v2/lmedm04.c index 8fb53b83c914..7b1aaed259db 100644 --- a/drivers/media/usb/dvb-usb-v2/lmedm04.c +++ b/drivers/media/usb/dvb-usb-v2/lmedm04.c @@ -134,7 +134,7 @@ struct lme2510_state { u8 stream_on; u8 pid_size; u8 pid_off; - void *buffer; + u8 int_buffer[128]; struct urb *lme_urb; u8 usb_buffer[64]; /* Frontend original calls */ @@ -408,20 +408,14 @@ static int lme2510_int_read(struct dvb_usb_adapter *adap) if (lme_int->lme_urb == NULL) return -ENOMEM; - lme_int->buffer = usb_alloc_coherent(d->udev, 128, GFP_ATOMIC, - &lme_int->lme_urb->transfer_dma); - - if (lme_int->buffer == NULL) - return -ENOMEM; - usb_fill_int_urb(lme_int->lme_urb, - d->udev, - usb_rcvintpipe(d->udev, 0xa), - lme_int->buffer, - 128, - lme2510_int_response, - adap, - 8); + d->udev, + usb_rcvintpipe(d->udev, 0xa), + lme_int->int_buffer, + sizeof(lme_int->int_buffer), + lme2510_int_response, + adap, + 8); /* Quirk of pipe reporting PIPE_BULK but behaves as interrupt */ ep = usb_pipe_endpoint(d->udev, lme_int->lme_urb->pipe); @@ -1245,11 +1239,9 @@ static void lme2510_exit(struct dvb_usb_device *d) lme2510_kill_urb(&adap->stream); } - if (st->lme_urb != NULL) { + if (st->lme_urb) { 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"); } }
Interrupt is always present throught life time of there is no dma element move this buffer to private area of driver. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> --- drivers/media/usb/dvb-usb-v2/lmedm04.c | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-)