mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-24 20:54:10 +08:00
mfd: arizona: Fix undefined behavior
When the driver is used with a subdevice that is disabled in the kernel configuration, clang gets a little confused about the control flow and fails to notice that n_subdevs is only uninitialized when subdevs is NULL, and we check for that, leading to a false-positive warning: drivers/mfd/arizona-core.c:1423:19: error: variable 'n_subdevs' is uninitialized when used here [-Werror,-Wuninitialized] subdevs, n_subdevs, NULL, 0, NULL); ^~~~~~~~~ drivers/mfd/arizona-core.c:999:15: note: initialize the variable 'n_subdevs' to silence this warning int n_subdevs, ret, i; ^ = 0 Ideally, we would rearrange the code to avoid all those early initializations and have an explicit exit in each disabled case, but it's much easier to chicken out and add one more initialization here to shut up the warning. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Nathan Chancellor <natechancellor@gmail.com> Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
This commit is contained in:
parent
c176c6d7e9
commit
5da6cbcd2f
@ -996,7 +996,7 @@ int arizona_dev_init(struct arizona *arizona)
|
|||||||
unsigned int reg, val;
|
unsigned int reg, val;
|
||||||
int (*apply_patch)(struct arizona *) = NULL;
|
int (*apply_patch)(struct arizona *) = NULL;
|
||||||
const struct mfd_cell *subdevs = NULL;
|
const struct mfd_cell *subdevs = NULL;
|
||||||
int n_subdevs, ret, i;
|
int n_subdevs = 0, ret, i;
|
||||||
|
|
||||||
dev_set_drvdata(arizona->dev, arizona);
|
dev_set_drvdata(arizona->dev, arizona);
|
||||||
mutex_init(&arizona->clk_lock);
|
mutex_init(&arizona->clk_lock);
|
||||||
|
Loading…
Reference in New Issue
Block a user