mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-04 04:28:10 -04:00
media: lmedm04: Handle errors for lme2510_int_read
Add check for the return value of usb_pipe_endpoint() and
usb_submit_urb() in order to catch the errors.
Fixes: 15e1ce3318 ("[media] lmedm04: Fix usb_submit_urb BOGUS urb xfer, pipe 1 != type 3 in interrupt urb")
Signed-off-by: Chen Ni <nichen@iscas.ac.cn>
Link: https://lore.kernel.org/r/20240521091042.1769684-1-nichen@iscas.ac.cn
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
committed by
Mauro Carvalho Chehab
parent
a7f5b36b34
commit
a2836d3fe2
@@ -373,6 +373,7 @@ static int lme2510_int_read(struct dvb_usb_adapter *adap)
|
||||
struct dvb_usb_device *d = adap_to_d(adap);
|
||||
struct lme2510_state *lme_int = adap_to_priv(adap);
|
||||
struct usb_host_endpoint *ep;
|
||||
int ret;
|
||||
|
||||
lme_int->lme_urb = usb_alloc_urb(0, GFP_KERNEL);
|
||||
|
||||
@@ -390,11 +391,20 @@ static int lme2510_int_read(struct dvb_usb_adapter *adap)
|
||||
|
||||
/* Quirk of pipe reporting PIPE_BULK but behaves as interrupt */
|
||||
ep = usb_pipe_endpoint(d->udev, lme_int->lme_urb->pipe);
|
||||
if (!ep) {
|
||||
usb_free_urb(lme_int->lme_urb);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
if (usb_endpoint_type(&ep->desc) == USB_ENDPOINT_XFER_BULK)
|
||||
lme_int->lme_urb->pipe = usb_rcvbulkpipe(d->udev, 0xa);
|
||||
|
||||
usb_submit_urb(lme_int->lme_urb, GFP_KERNEL);
|
||||
ret = usb_submit_urb(lme_int->lme_urb, GFP_KERNEL);
|
||||
if (ret) {
|
||||
usb_free_urb(lme_int->lme_urb);
|
||||
return ret;
|
||||
}
|
||||
|
||||
info("INT Interrupt Service Started");
|
||||
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user