diff options
Diffstat (limited to 'drivers/media/dvb-core/dvb_demux.c')
-rw-r--r-- | drivers/media/dvb-core/dvb_demux.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/media/dvb-core/dvb_demux.c b/drivers/media/dvb-core/dvb_demux.c index 58de4410c525..6c7ff0cdcd32 100644 --- a/drivers/media/dvb-core/dvb_demux.c +++ b/drivers/media/dvb-core/dvb_demux.c | |||
@@ -435,7 +435,7 @@ static void dvb_dmx_swfilter_packet(struct dvb_demux *demux, const u8 *buf) | |||
435 | dprintk_tscheck("TEI detected. " | 435 | dprintk_tscheck("TEI detected. " |
436 | "PID=0x%x data1=0x%x\n", | 436 | "PID=0x%x data1=0x%x\n", |
437 | pid, buf[1]); | 437 | pid, buf[1]); |
438 | /* data in this packet cant be trusted - drop it unless | 438 | /* data in this packet can't be trusted - drop it unless |
439 | * module option dvb_demux_feed_err_pkts is set */ | 439 | * module option dvb_demux_feed_err_pkts is set */ |
440 | if (!dvb_demux_feed_err_pkts) | 440 | if (!dvb_demux_feed_err_pkts) |
441 | return; | 441 | return; |
@@ -1032,8 +1032,13 @@ static int dmx_section_feed_release_filter(struct dmx_section_feed *feed, | |||
1032 | return -EINVAL; | 1032 | return -EINVAL; |
1033 | } | 1033 | } |
1034 | 1034 | ||
1035 | if (feed->is_filtering) | 1035 | if (feed->is_filtering) { |
1036 | /* release dvbdmx->mutex as far as it is | ||
1037 | acquired by stop_filtering() itself */ | ||
1038 | mutex_unlock(&dvbdmx->mutex); | ||
1036 | feed->stop_filtering(feed); | 1039 | feed->stop_filtering(feed); |
1040 | mutex_lock(&dvbdmx->mutex); | ||
1041 | } | ||
1037 | 1042 | ||
1038 | spin_lock_irq(&dvbdmx->lock); | 1043 | spin_lock_irq(&dvbdmx->lock); |
1039 | f = dvbdmxfeed->filter; | 1044 | f = dvbdmxfeed->filter; |