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@xxxxxxxxx> > --- > 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