In function sun8i_dwmac_set_syscon(), local variable "val" could be uninitialized if function regmap_read() returns -EINVAL. However, it will be used directly in the if statement, which is potentially unsafe.
Signed-off-by: Yizhuo <yzhai...@ucr.edu> --- drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c index 39c2122a4f26..11d481c9e7ab 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c @@ -639,9 +639,14 @@ static int sun8i_dwmac_set_syscon(struct stmmac_priv *priv) struct sunxi_priv_data *gmac = priv->plat->bsp_priv; struct device_node *node = priv->device->of_node; int ret; - u32 reg, val; + u32 reg, val = 0; + + ret = regmap_read(gmac->regmap, SYSCON_EMAC_REG, &val); + if (ret) { + dev_err(priv->device, "Fail to read SYSCON_EMAC_REG.\n"); + return ret; + } - regmap_read(gmac->regmap, SYSCON_EMAC_REG, &val); reg = gmac->variant->default_syscon_value; if (reg != val) dev_warn(priv->device, -- 2.17.1