mfd: madera: Work around false-positive -Wininitialized warning

clang-21 warns about one uninitialized variable getting dereferenced
in madera_dev_init:

drivers/mfd/madera-core.c:739:10: error: variable 'mfd_devs' is uninitialized when used here [-Werror,-Wuninitialized]
  739 |                               mfd_devs, n_devs,
      |                               ^~~~~~~~
drivers/mfd/madera-core.c:459:33: note: initialize the variable 'mfd_devs' to silence this warning
  459 |         const struct mfd_cell *mfd_devs;
      |                                        ^
      |                                         = NULL

The code is actually correct here because n_devs is only nonzero
when mfd_devs is a valid pointer, but this is impossible for the
compiler to see reliably.

Change the logic to check for the pointer as well, to make this easier
for the compiler to follow.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20250807071932.4085458-1-arnd@kernel.org
Signed-off-by: Lee Jones <lee@kernel.org>
pull/1354/merge
Arnd Bergmann 2025-08-07 09:19:28 +02:00 committed by Lee Jones
parent 99767a0c8b
commit 364752aa0c
1 changed files with 2 additions and 2 deletions

View File

@ -456,7 +456,7 @@ int madera_dev_init(struct madera *madera)
struct device *dev = madera->dev; struct device *dev = madera->dev;
unsigned int hwid; unsigned int hwid;
int (*patch_fn)(struct madera *) = NULL; int (*patch_fn)(struct madera *) = NULL;
const struct mfd_cell *mfd_devs; const struct mfd_cell *mfd_devs = NULL;
int n_devs = 0; int n_devs = 0;
int i, ret; int i, ret;
@ -670,7 +670,7 @@ int madera_dev_init(struct madera *madera)
goto err_reset; goto err_reset;
} }
if (!n_devs) { if (!n_devs || !mfd_devs) {
dev_err(madera->dev, "Device ID 0x%x not a %s\n", hwid, dev_err(madera->dev, "Device ID 0x%x not a %s\n", hwid,
madera->type_name); madera->type_name);
ret = -ENODEV; ret = -ENODEV;