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.ai...@iki.fi>
Acked-by: Laurent Pinchart <laurent.pinch...@ideasonboard.com>
---
 drivers/media/platform/omap3isp/isp.c |   13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/drivers/media/platform/omap3isp/isp.c 
b/drivers/media/platform/omap3isp/isp.c
index fb193b6..4ab674d 100644
--- a/drivers/media/platform/omap3isp/isp.c
+++ b/drivers/media/platform/omap3isp/isp.c
@@ -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;
-- 
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to