[media] omap3isp: Avoid a BUG_ON() in media_entity_create_link()
authorSakari Ailus <sakari.ailus@iki.fi>
Wed, 25 Mar 2015 22:57:26 +0000 (19:57 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Thu, 2 Apr 2015 19:37:21 +0000 (16:37 -0300)
If an uninitialised v4l2_subdev struct was passed to
media_entity_create_link(), one of the BUG_ON()'s in the function will be
hit since media_entity.num_pads will be zero. Avoid this by checking whether
the num_pads field is non-zero for the interface.

Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/platform/omap3isp/isp.c

index fb193b65b5ced9777234163fd135b0463d649117..4ab674dd43c19889baf199c8315ff16e76d49951 100644 (file)
@@ -1946,6 +1946,19 @@ static int isp_register_entities(struct isp_device *isp)
                        goto done;
                }
 
+               /*
+                * Not all interfaces are available on all revisions
+                * of the ISP. The sub-devices of those interfaces
+                * aren't initialised in such a case. Check this by
+                * ensuring the num_pads is non-zero.
+                */
+               if (!input->num_pads) {
+                       dev_err(isp->dev, "%s: invalid input %u\n",
+                               entity->name, subdevs->interface);
+                       ret = -EINVAL;
+                       goto done;
+               }
+
                for (i = 0; i < sensor->entity.num_pads; i++) {
                        if (sensor->entity.pads[i].flags & MEDIA_PAD_FL_SOURCE)
                                break;