|
|
@@ -743,7 +743,7 @@ static int si470x_usb_driver_probe(struct usb_interface *intf,
|
|
|
/* start radio */
|
|
|
retval = si470x_start_usb(radio);
|
|
|
if (retval < 0)
|
|
|
- goto err_all;
|
|
|
+ goto err_buf;
|
|
|
|
|
|
/* set initial frequency */
|
|
|
si470x_set_freq(radio, 87.5 * FREQ_MUL); /* available in all regions */
|
|
|
@@ -758,6 +758,8 @@ static int si470x_usb_driver_probe(struct usb_interface *intf,
|
|
|
|
|
|
return 0;
|
|
|
err_all:
|
|
|
+ usb_kill_urb(radio->int_in_urb);
|
|
|
+err_buf:
|
|
|
kfree(radio->buffer);
|
|
|
err_ctrl:
|
|
|
v4l2_ctrl_handler_free(&radio->hdl);
|
|
|
@@ -831,6 +833,7 @@ static void si470x_usb_driver_disconnect(struct usb_interface *intf)
|
|
|
mutex_lock(&radio->lock);
|
|
|
v4l2_device_disconnect(&radio->v4l2_dev);
|
|
|
video_unregister_device(&radio->videodev);
|
|
|
+ usb_kill_urb(radio->int_in_urb);
|
|
|
usb_set_intfdata(intf, NULL);
|
|
|
mutex_unlock(&radio->lock);
|
|
|
v4l2_device_put(&radio->v4l2_dev);
|