[media] dvb core: only start media entity if not NULL
authorMauro Carvalho Chehab <mchehab@osg.samsung.com>
Mon, 23 Feb 2015 12:41:17 +0000 (09:41 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Mon, 23 Feb 2015 19:10:54 +0000 (16:10 -0300)
The logic there tries to start the media entity even if it
doesn't exist, causing this bug:

[  314.356162] BUG: unable to handle kernel NULL pointer dereference at 0000000000000010
[  314.356202] IP: [<ffffffffa02ef74c>] media_entity_pipeline_start+0x1c/0x390 [media]

Reported-by: Gert-Jan van der Stroom <gjstroom@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/dvb-core/dvb_frontend.c

index aa530690819373a41110fc60722e77978cad1046..79d2fac5075cfa36634b404e728988c6bb16f1ce 100644 (file)
@@ -712,7 +712,7 @@ static int dvb_frontend_thread(void *data)
                /* FIXME: return an error if it fails */
                dev_info(fe->dvb->device,
                        "proceeding with FE task\n");
-       } else {
+       } else if (fepriv->pipe_start_entity) {
                ret = media_entity_pipeline_start(fepriv->pipe_start_entity,
                                                  &fepriv->pipe);
                if (ret)
@@ -830,7 +830,8 @@ restart:
        }
 
 #ifdef CONFIG_MEDIA_CONTROLLER_DVB
-       media_entity_pipeline_stop(fepriv->pipe_start_entity);
+       if (fepriv->pipe_start_entity)
+               media_entity_pipeline_stop(fepriv->pipe_start_entity);
        fepriv->pipe_start_entity = NULL;
 #endif