net: stmmac: Avoid one more sometimes uninitialized Clang warning
authorNathan Chancellor <natechancellor@gmail.com>
Fri, 8 Mar 2019 04:02:39 +0000 (21:02 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sat, 9 Mar 2019 07:20:22 +0000 (23:20 -0800)
When building with -Wsometimes-uninitialized, Clang warns:

drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c:111:2: error: variable
'ns' is used uninitialized whenever 'if' condition is false
[-Werror,-Wsometimes-uninitialized]
drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c:111:2: error: variable
'ns' is used uninitialized whenever '&&' condition is false
[-Werror,-Wsometimes-uninitialized]

Clang is concerned with the use of stmmac_do_void_callback (which
stmmac_get_systime wraps), as it may fail to initialize these values if
the if condition was ever false (meaning the callback doesn't exist).
It's not wrong because the callback is what initializes ns. While it's
unlikely that the callback is going to disappear at some point and make
that condition false, we can easily avoid this warning by zero
initializing the variable.

Link: https://github.com/ClangBuiltLinux/linux/issues/384
Fixes: df103170854e ("net: stmmac: Avoid sometimes uninitialized Clang warnings")
Suggested-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c

index 2293e21f789f6c5e98e542d7dd2384d0a8f7a7f2..cc60b3fb0892792d61cad4e46620a20913a30b54 100644 (file)
@@ -105,7 +105,7 @@ static int stmmac_get_time(struct ptp_clock_info *ptp, struct timespec64 *ts)
        struct stmmac_priv *priv =
            container_of(ptp, struct stmmac_priv, ptp_clock_ops);
        unsigned long flags;
-       u64 ns;
+       u64 ns = 0;
 
        spin_lock_irqsave(&priv->ptp_lock, flags);
        stmmac_get_systime(priv, priv->ptpaddr, &ns);