--- x/drivers/media/usb/siano/smsusb.c +++ y/drivers/media/usb/siano/smsusb.c @@ -339,9 +339,12 @@ static void smsusb_term_device(struct us struct smsusb_device_t *dev = usb_get_intfdata(intf); if (dev) { + int stop = dev->state != SMSUSB_DISCONNECTED; + dev->state = SMSUSB_DISCONNECTED; - smsusb_stop_streaming(dev); + if (stop) + smsusb_stop_streaming(dev); /* unregister from smscore */ if (dev->coredev)