regulator: max77802: Bounds check regulator id against opmode
authorKees Cook <keescook@chromium.org>
Fri, 27 Jan 2023 22:52:07 +0000 (14:52 -0800)
committerMark Brown <broonie@kernel.org>
Sat, 28 Jan 2023 11:27:57 +0000 (11:27 +0000)
commit4fd8bcec5fd7c0d586206fa2f42bd67b06cdaa7e
tree04f3320d70956dc3c348868c6ee806a68dcc9a73
parentfad8ddda1c40c00bff4ac45eb9b85e1f717f17f4
regulator: max77802: Bounds check regulator id against opmode

Explicitly bounds-check the id before accessing the opmode array. Seen
with GCC 13:

../drivers/regulator/max77802-regulator.c: In function 'max77802_enable':
../drivers/regulator/max77802-regulator.c:217:29: warning: array subscript [0, 41] is outside array bounds of 'unsigned int[42]' [-Warray-bounds=]
  217 |         if (max77802->opmode[id] == MAX77802_OFF_PWRREQ)
      |             ~~~~~~~~~~~~~~~~^~~~
../drivers/regulator/max77802-regulator.c:62:22: note: while referencing 'opmode'
   62 |         unsigned int opmode[MAX77802_REG_MAX];
      |                      ^~~~~~

Cc: Javier Martinez Canillas <javier@dowhile0.org>
Cc: Liam Girdwood <lgirdwood@gmail.com>
Cc: Mark Brown <broonie@kernel.org>
Signed-off-by: Kees Cook <keescook@chromium.org>
Acked-by: Javier Martinez Canillas <javierm@redhat.com>
Link: https://lore.kernel.org/r/20230127225203.never.864-kees@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/max77802-regulator.c