• Nathan Chancellor's avatar
    clk: sophgo: Avoid -Wsometimes-uninitialized in sg2042_clk_pll_set_rate() · 00c7ded6
    Nathan Chancellor authored
    Clang warns (or errors with CONFIG_WERROR=y):
    
      drivers/clk/sophgo/clk-sg2042-pll.c:396:6: error: variable 'ret' is used uninitialized whenever 'if' condition is true [-Werror,-Wsometimes-uninitialized]
        396 |         if (sg2042_pll_enable(pll, 0)) {
            |             ^~~~~~~~~~~~~~~~~~~~~~~~~
      drivers/clk/sophgo/clk-sg2042-pll.c:418:9: note: uninitialized use occurs here
        418 |         return ret;
            |                ^~~
      drivers/clk/sophgo/clk-sg2042-pll.c:396:2: note: remove the 'if' if its condition is always false
        396 |         if (sg2042_pll_enable(pll, 0)) {
            |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        397 |                 pr_warn("Can't disable pll(%s), status error\n", pll->hw.init->name);
            |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        398 |                 goto out;
            |                 ~~~~~~~~~
        399 |         }
            |         ~
      drivers/clk/sophgo/clk-sg2042-pll.c:393:9: note: initialize the variable 'ret' to silence this warning
        393 |         int ret;
            |                ^
            |                 = 0
      1 error generated.
    
    sg2042_pll_enable() only ever returns zero, so this situation cannot
    happen, but clang does not perform interprocedural analysis, so it
    cannot know this to avoid the warning. Make it clearer to the compiler
    by making sg2042_pll_enable() void and eliminate the error handling in
    sg2042_clk_pll_set_rate(), which clears up the warning, as ret will
    always be initialized.
    
    Fixes: 48cf7e01 ("clk: sophgo: Add SG2042 clock driver")
    Signed-off-by: default avatarNathan Chancellor <nathan@kernel.org>
    Link: https://lore.kernel.org/r/20240710-clk-sg2042-fix-sometimes-uninitialized-pll_set_rate-v1-1-538fa82dd539@kernel.orgSigned-off-by: default avatarStephen Boyd <sboyd@kernel.org>
    00c7ded6
clk-sg2042-pll.c 15.1 KB