summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorUdaya Mallavarapu <udaym@codeaurora.org>2016-12-07 13:16:21 +0530
committerGerrit - the friendly Code Review server <code-review@localhost>2016-12-06 23:52:08 -0800
commit34cbae8bc57a8490e74bfba91050fa10d6fc4dcc (patch)
treefa6b77bbdf304400cc523a1d5497b67d2057a8f3 /drivers
parent69352ff8b46b11f98bf37f82534a82222466eadd (diff)
media: dvb-core: Add feed state check before stop dvbdemux feed
Add feed state check whether any filter is configured on dvbdemux feed before feed stop is called. If any filter is started the feed status should be set to DMX_STATE_GO. CRs-Fixed: 1090466 Change-Id: If9e87065bb9fb82befb398f2a3a0d0da2f76efa5 Signed-off-by: Udaya Mallavarapu <udaym@codeaurora.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/media/dvb-core/dvb_demux.c5
-rw-r--r--drivers/media/platform/msm/dvb/demux/mpq_dmx_plugin_common.c12
2 files changed, 15 insertions, 2 deletions
diff --git a/drivers/media/dvb-core/dvb_demux.c b/drivers/media/dvb-core/dvb_demux.c
index 7809770bd1ae..60f7cfbd9f9b 100644
--- a/drivers/media/dvb-core/dvb_demux.c
+++ b/drivers/media/dvb-core/dvb_demux.c
@@ -2840,6 +2840,11 @@ static int dmx_section_feed_stop_filtering(struct dmx_section_feed *feed)
mutex_lock(&dvbdmx->mutex);
+ if (dvbdmxfeed->state < DMX_STATE_GO) {
+ mutex_unlock(&dvbdmx->mutex);
+ return -EINVAL;
+ }
+
if (!dvbdmx->stop_feed) {
mutex_unlock(&dvbdmx->mutex);
return -ENODEV;
diff --git a/drivers/media/platform/msm/dvb/demux/mpq_dmx_plugin_common.c b/drivers/media/platform/msm/dvb/demux/mpq_dmx_plugin_common.c
index fb8f0c4bae37..a0195ac400f8 100644
--- a/drivers/media/platform/msm/dvb/demux/mpq_dmx_plugin_common.c
+++ b/drivers/media/platform/msm/dvb/demux/mpq_dmx_plugin_common.c
@@ -1801,7 +1801,11 @@ int mpq_dmx_terminate_feed(struct dvb_demux_feed *feed)
}
mpq_sdmx_close_session(mpq_demux);
- mpq_demux->num_secure_feeds--;
+ if (mpq_demux->num_secure_feeds > 0)
+ mpq_demux->num_secure_feeds--;
+ else
+ MPQ_DVB_DBG_PRINT("%s: Invalid secure feed count= %u\n",
+ __func__, mpq_demux->num_secure_feeds);
}
if (dvb_dmx_is_video_feed(feed)) {
@@ -1818,7 +1822,11 @@ int mpq_dmx_terminate_feed(struct dvb_demux_feed *feed)
}
mpq_sdmx_terminate_metadata_buffer(mpq_feed);
- mpq_demux->num_active_feeds--;
+ if (mpq_demux->num_active_feeds > 0)
+ mpq_demux->num_active_feeds--;
+ else
+ MPQ_DVB_DBG_PRINT("%s: Invalid num_active_feeds count = %u\n",
+ __func__, mpq_demux->num_active_feeds);
mutex_unlock(&mpq_demux->mutex);