diff --git a/[refs] b/[refs] index 56d4924354ee..518b3b82cb34 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8159c184cf58ac78fc868d776fa2062d1162b6e5 +refs/heads/master: de2a20baff364b8dd19371acc1dc0b138e0b08b9 diff --git a/trunk/drivers/media/video/tm6000/tm6000-dvb.c b/trunk/drivers/media/video/tm6000/tm6000-dvb.c index 5e6c129a4beb..db6a561bca3e 100644 --- a/trunk/drivers/media/video/tm6000/tm6000-dvb.c +++ b/trunk/drivers/media/video/tm6000/tm6000-dvb.c @@ -89,9 +89,19 @@ static void tm6000_urb_received(struct urb *urb) int ret; struct tm6000_core *dev = urb->context; - if (urb->status != 0) + switch (urb->status) { + case 0: + case -ETIMEDOUT: + break; + case -ENOENT: + case -ECONNRESET: + case -ESHUTDOWN: + return; + default: print_err_status(dev, 0, urb->status); - else if (urb->actual_length > 0) + } + + if (urb->actual_length > 0) dvb_dmx_swfilter(&dev->dvb->demux, urb->transfer_buffer, urb->actual_length); @@ -151,7 +161,7 @@ static int tm6000_start_stream(struct tm6000_core *dev) printk(KERN_ERR "tm6000: pipe resetted\n"); /* mutex_lock(&tm6000_driver.open_close_mutex); */ - ret = usb_submit_urb(dvb->bulk_urb, GFP_KERNEL); + ret = usb_submit_urb(dvb->bulk_urb, GFP_ATOMIC); /* mutex_unlock(&tm6000_driver.open_close_mutex); */ if (ret) {