media: bcm2835-unicam: Replace hard coded loop limit with a define
authorDave Stevenson <dave.stevenson@raspberrypi.org>
Thu, 17 Oct 2019 09:16:16 +0000 (10:16 +0100)
committerPhil Elwell <pelwell@users.noreply.github.com>
Thu, 17 Oct 2019 10:42:51 +0000 (11:42 +0100)
In order to protect against a dodgy sensor driver never returning
an error from enum_mbus_code there was a hardcoded value of 128
that aborted the loop.
There is a need to call enum_mbus_code from elsewhere, so move that
number to a define so it is common across calls.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
drivers/media/platform/bcm2835/bcm2835-unicam.c

index f12d1ad..8eb1346 100644 (file)
@@ -97,6 +97,11 @@ MODULE_PARM_DESC(debug, "Debug level 0-3");
 #define unicam_err(dev, fmt, arg...)   \
                v4l2_err(&(dev)->v4l2_dev, fmt, ##arg)
 
+/* To protect against a dodgy sensor driver never returning an error from
+ * enum_mbus_code, set a maximum index value to be used.
+ */
+#define MAX_ENUM_MBUS_CODE     128
+
 /*
  * Stride is a 16 bit register, but also has to be a multiple of 16.
  */
@@ -738,11 +743,7 @@ static int unicam_enum_fmt_vid_cap(struct file *file, void  *priv,
        int ret = 0;
        int i;
 
-       /* Loop whilst the sensor driver says it has more formats, but add a
-        * failsafe against a dodgy driver at 128 (more than any sensor will
-        * ever sensibly advertise)
-        */
-       for (i = 0; !ret && i < 128 ; i++) {
+       for (i = 0; !ret && i < MAX_ENUM_MBUS_CODE; i++) {
                memset(&mbus_code, 0, sizeof(mbus_code));
                mbus_code.index = i;