In function mdio_sc_cfg_reg_write(), variable reg_value could be uninitialized if regmap_read() fails. However, this variable is used later in the if statement, which is potentially unsafe.
Signed-off-by: Yizhuo <yzhai...@ucr.edu> --- drivers/net/ethernet/hisilicon/hns_mdio.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/hisilicon/hns_mdio.c b/drivers/net/ethernet/hisilicon/hns_mdio.c index 3e863a71c513..f5b64cb2d0f6 100644 --- a/drivers/net/ethernet/hisilicon/hns_mdio.c +++ b/drivers/net/ethernet/hisilicon/hns_mdio.c @@ -148,11 +148,17 @@ static int mdio_sc_cfg_reg_write(struct hns_mdio_device *mdio_dev, { u32 time_cnt; u32 reg_value; + int ret; regmap_write(mdio_dev->subctrl_vbase, cfg_reg, set_val); for (time_cnt = MDIO_TIMEOUT; time_cnt; time_cnt--) { - regmap_read(mdio_dev->subctrl_vbase, st_reg, ®_value); + ret = regmap_read(mdio_dev->subctrl_vbase, st_reg, ®_value); + if (ret) { + dev_err(mdio_dev->regmap->dev, "Fail to read from the register\n"); + return ret; + } + reg_value &= st_msk; if ((!!check_st) == (!!reg_value)) break; -- 2.17.1