@@ -265,7 +265,6 @@ static inline int dvb_usb_ctrl_feed(struct dvb_demux_feed *dvbdmxfeed,
/* stop feeding if it is last pid */
if (adap->feed_count == 0) {
dev_dbg(&d->udev->dev, "%s: stop feeding\n", __func__);
- usb_urb_killv2(&adap->stream);
if (d->props->streaming_ctrl) {
ret = d->props->streaming_ctrl(
@@ -274,9 +273,11 @@ static inline int dvb_usb_ctrl_feed(struct dvb_demux_feed *dvbdmxfeed,
dev_err(&d->udev->dev, "%s: streaming_ctrl() " \
"failed=%d\n", KBUILD_MODNAME,
ret);
+ usb_urb_killv2(&adap->stream);
goto err_mutex_unlock;
}
}
+ usb_urb_killv2(&adap->stream);
mutex_unlock(&adap->sync_mutex);
}
Logically it is better ask hardware to stop streaming before killing urbs carrying stream. Earlier it was just opposite. Now code runs: * submit urbs * start streaming ** streaming ongoing ** * stop streaming * kill urbs Signed-off-by: Antti Palosaari <crope@iki.fi> --- drivers/media/usb/dvb-usb-v2/dvb_usb_core.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)