|
@@ -1032,8 +1032,13 @@ static int dmx_section_feed_release_filter(struct dmx_section_feed *feed,
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|
|
|
- if (feed->is_filtering)
|
|
|
+ if (feed->is_filtering) {
|
|
|
+ /* release dvbdmx->mutex as far as
|
|
|
+ it is acquired by stop_filtering() itself */
|
|
|
+ mutex_unlock(&dvbdmx->mutex);
|
|
|
feed->stop_filtering(feed);
|
|
|
+ mutex_lock(&dvbdmx->mutex);
|
|
|
+ }
|
|
|
|
|
|
spin_lock_irq(&dvbdmx->lock);
|
|
|
f = dvbdmxfeed->filter;
|