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;