[PATCH v2] IOMUX: Fix access past end of console_devices
Andy Shevchenko
andriy.shevchenko at linux.intel.com
Thu Apr 7 13:04:38 CEST 2022
On Wed, Apr 06, 2022 at 02:36:35PM -0400, Sean Anderson wrote:
> We should only access console_devices[file][i] once we have checked that i
> < cd_count[file]. Otherwise, we will access uninitialized memory at the end
> of the loop. console_devices[file][i] should not be NULL, but putting the
> assignment in the loop condition allows us to ensure that i is checked
> beforehand. This isn't a bug, but it does make valgrind stop complaining.
Acked-by: Andy Shevchenko <andriy.shevchenko at linux.intel.com>
> Fixes: 400797cad3 ("IOMUX: Split out for_each_console_dev() helper macro")
> Signed-off-by: Sean Anderson <seanga2 at gmail.com>
> Reviewed-by: Andrew Scull <ascull at google.com>
> ---
>
> Changes in v2:
> - Put each clause of the for loop on its own line
>
> include/iomux.h | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/include/iomux.h b/include/iomux.h
> index 37f5f6dee6..35caa697eb 100644
> --- a/include/iomux.h
> +++ b/include/iomux.h
> @@ -24,10 +24,10 @@ extern struct stdio_dev **console_devices[MAX_FILES];
> */
> extern int cd_count[MAX_FILES];
>
> -#define for_each_console_dev(i, file, dev) \
> - for (i = 0, dev = console_devices[file][i]; \
> - i < cd_count[file]; \
> - i++, dev = console_devices[file][i])
> +#define for_each_console_dev(i, file, dev) \
> + for (i = 0; \
> + i < cd_count[file] && (dev = console_devices[file][i]); \
> + i++)
>
> int iomux_match_device(struct stdio_dev **, const int, struct stdio_dev *);
> int iomux_doenv(const int, const char *);
> --
> 2.35.1
>
--
With Best Regards,
Andy Shevchenko
More information about the U-Boot
mailing list