X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=target%2Flinux%2Fbrcm2708%2Fpatches-4.19%2F950-0737-media-bcm2835-unicam-Replace-hard-coded-loop-limit-w.patch;fp=target%2Flinux%2Fbrcm2708%2Fpatches-4.19%2F950-0737-media-bcm2835-unicam-Replace-hard-coded-loop-limit-w.patch;h=cb9a82b12769673eee6e2e6b6eaa9c571d271cab;hb=c2308a7e4adbb2acc8ff149f91d1ca46801c135e;hp=0000000000000000000000000000000000000000;hpb=67dcc43f3a22dc3a7ac07a7065971b426feeb043;p=openwrt%2Fopenwrt.git diff --git a/target/linux/brcm2708/patches-4.19/950-0737-media-bcm2835-unicam-Replace-hard-coded-loop-limit-w.patch b/target/linux/brcm2708/patches-4.19/950-0737-media-bcm2835-unicam-Replace-hard-coded-loop-limit-w.patch new file mode 100644 index 0000000000..cb9a82b127 --- /dev/null +++ b/target/linux/brcm2708/patches-4.19/950-0737-media-bcm2835-unicam-Replace-hard-coded-loop-limit-w.patch @@ -0,0 +1,44 @@ +From 1a013467030ffd6f1958b8a4db1b5312213fb9bd Mon Sep 17 00:00:00 2001 +From: Dave Stevenson +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 +--- + 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; +