Re: [PATCH] net: hisilicon: Variable "reg_value" in function mdio_sc_cfg_reg_write() could be uninitialized
From: Yizhuo Zhai <hidden>
Date: 2019-09-02 23:21:37
Also in:
lkml
Sorry for the inconvenience. I made some mistake here, please ignore this patch and I will submit a new one. On Mon, Sep 2, 2019 at 4:14 PM Yizhuo [off-list ref] wrote:
quoted hunk ↗ jump to hunk
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 <redacted> --- 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
-- Kind Regards, Yizhuo Zhai Computer Science, Graduate Student University of California, Riverside