aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-4.19/950-0735-media-bcm2835-unicam-Replace-hard-coded-loop-limit-w.patch
blob: cb9a82b12769673eee6e2e6b6eaa9c571d271cab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
From 1a013467030ffd6f1958b8a4db1b5312213fb9bd Mon Sep 17 00:00:00 2001
From: Dave Stevenson <dave.stevenson@raspberrypi.org>
Date: Thu, 17 Oct 2019 10:16:16 +0100
Subject: [PATCH] media: bcm2835-unicam: Replace hard coded loop limit
 with a define

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 | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

--- a/drivers/media/platform/bcm2835/bcm2835-unicam.c
+++ b/drivers/media/platform/bcm2835/bcm2835-unicam.c
@@ -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(struc
 	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;