mirror of https://gitee.com/openkylin/linux.git
[media] rc/imon: need to submit urb before ffdc type check
Otherwise, we have a null receive buffer, and the logic all falls down, goes boom, all ffdc devs wind up as imon IR w/VFD. Oops. Signed-off-by: Jarod Wilson <jarod@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
2e4c55626a
commit
9ad77eb57b
|
@ -2110,18 +2110,6 @@ static struct imon_context *imon_init_intf0(struct usb_interface *intf)
|
||||||
goto find_endpoint_failed;
|
goto find_endpoint_failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
ictx->idev = imon_init_idev(ictx);
|
|
||||||
if (!ictx->idev) {
|
|
||||||
dev_err(dev, "%s: input device setup failed\n", __func__);
|
|
||||||
goto idev_setup_failed;
|
|
||||||
}
|
|
||||||
|
|
||||||
ictx->rdev = imon_init_rdev(ictx);
|
|
||||||
if (!ictx->rdev) {
|
|
||||||
dev_err(dev, "%s: rc device setup failed\n", __func__);
|
|
||||||
goto rdev_setup_failed;
|
|
||||||
}
|
|
||||||
|
|
||||||
usb_fill_int_urb(ictx->rx_urb_intf0, ictx->usbdev_intf0,
|
usb_fill_int_urb(ictx->rx_urb_intf0, ictx->usbdev_intf0,
|
||||||
usb_rcvintpipe(ictx->usbdev_intf0,
|
usb_rcvintpipe(ictx->usbdev_intf0,
|
||||||
ictx->rx_endpoint_intf0->bEndpointAddress),
|
ictx->rx_endpoint_intf0->bEndpointAddress),
|
||||||
|
@ -2135,13 +2123,25 @@ static struct imon_context *imon_init_intf0(struct usb_interface *intf)
|
||||||
goto urb_submit_failed;
|
goto urb_submit_failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ictx->idev = imon_init_idev(ictx);
|
||||||
|
if (!ictx->idev) {
|
||||||
|
dev_err(dev, "%s: input device setup failed\n", __func__);
|
||||||
|
goto idev_setup_failed;
|
||||||
|
}
|
||||||
|
|
||||||
|
ictx->rdev = imon_init_rdev(ictx);
|
||||||
|
if (!ictx->rdev) {
|
||||||
|
dev_err(dev, "%s: rc device setup failed\n", __func__);
|
||||||
|
goto rdev_setup_failed;
|
||||||
|
}
|
||||||
|
|
||||||
return ictx;
|
return ictx;
|
||||||
|
|
||||||
urb_submit_failed:
|
|
||||||
rc_unregister_device(ictx->rdev);
|
|
||||||
rdev_setup_failed:
|
rdev_setup_failed:
|
||||||
input_unregister_device(ictx->idev);
|
input_unregister_device(ictx->idev);
|
||||||
idev_setup_failed:
|
idev_setup_failed:
|
||||||
|
usb_kill_urb(ictx->rx_urb_intf0);
|
||||||
|
urb_submit_failed:
|
||||||
find_endpoint_failed:
|
find_endpoint_failed:
|
||||||
mutex_unlock(&ictx->lock);
|
mutex_unlock(&ictx->lock);
|
||||||
usb_free_urb(tx_urb);
|
usb_free_urb(tx_urb);
|
||||||
|
|
Loading…
Reference in New Issue