--- 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)