lkml.org 
[lkml]   [2019]   [Jul]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.19 053/101] mfd: arizona: Fix undefined behavior
    Date
    From: Arnd Bergmann <arnd@arndb.de>

    [ Upstream commit 5da6cbcd2f395981aa9bfc571ace99f1c786c985 ]

    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>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/mfd/arizona-core.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/drivers/mfd/arizona-core.c b/drivers/mfd/arizona-core.c
    index 5f1e37d23943..47d6d40f41cd 100644
    --- a/drivers/mfd/arizona-core.c
    +++ b/drivers/mfd/arizona-core.c
    @@ -996,7 +996,7 @@ int arizona_dev_init(struct arizona *arizona)
    unsigned int reg, val;
    int (*apply_patch)(struct arizona *) = NULL;
    const struct mfd_cell *subdevs = NULL;
    - int n_subdevs, ret, i;
    + int n_subdevs = 0, ret, i;

    dev_set_drvdata(arizona->dev, arizona);
    mutex_init(&arizona->clk_lock);
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-07-19 06:25    [W:4.032 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site