summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYizhuo <yzhai003@ucr.edu>2019-10-01 13:24:39 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-10-29 09:15:05 +0100
commitf549c98ada3321ad01485fafa3c556eac406dd7f (patch)
tree28e37f664ed4edeca830c3132cfc1a5db1498e0b
parentb742b54cb85e049bb4992dce19977014d9b6473f (diff)
downloadlinux-f549c98ada3321ad01485fafa3c556eac406dd7f.tar.gz
linux-f549c98ada3321ad01485fafa3c556eac406dd7f.tar.bz2
linux-f549c98ada3321ad01485fafa3c556eac406dd7f.zip
net: hisilicon: Fix usage of uninitialized variable in function mdio_sc_cfg_reg_write()
[ Upstream commit 53de429f4e88f538f7a8ec2b18be8c0cd9b2c8e1 ] In function mdio_sc_cfg_reg_write(), variable "reg_value" could be uninitialized if regmap_read() fails. However, "reg_value" is used to decide the control flow later in the if statement, which is potentially unsafe. Signed-off-by: Yizhuo <yzhai003@ucr.edu> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
-rw-r--r--drivers/net/ethernet/hisilicon/hns_mdio.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/net/ethernet/hisilicon/hns_mdio.c b/drivers/net/ethernet/hisilicon/hns_mdio.c
index de23a0ead5d7..d06efcd5f13b 100644
--- a/drivers/net/ethernet/hisilicon/hns_mdio.c
+++ b/drivers/net/ethernet/hisilicon/hns_mdio.c
@@ -166,11 +166,15 @@ 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, &reg_value);
+ ret = regmap_read(mdio_dev->subctrl_vbase, st_reg, &reg_value);
+ if (ret)
+ return ret;
+
reg_value &= st_msk;
if ((!!check_st) == (!!reg_value))
break;