Commit f7113b3a authored by Peter Chen's avatar Peter Chen Committed by David S. Miller

ethernet: stmicro: stmmac: dwmac-socfpga: add missing of_node_put after calling of_parse_phandle

of_node_put needs to be called when the device node which is got
from of_parse_phandle has finished using.
Signed-off-by: default avatarPeter Chen <peter.chen@nxp.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 8da703dc
...@@ -135,7 +135,9 @@ static int socfpga_dwmac_parse_data(struct socfpga_dwmac *dwmac, struct device * ...@@ -135,7 +135,9 @@ static int socfpga_dwmac_parse_data(struct socfpga_dwmac *dwmac, struct device *
np_splitter = of_parse_phandle(np, "altr,emac-splitter", 0); np_splitter = of_parse_phandle(np, "altr,emac-splitter", 0);
if (np_splitter) { if (np_splitter) {
if (of_address_to_resource(np_splitter, 0, &res_splitter)) { ret = of_address_to_resource(np_splitter, 0, &res_splitter);
of_node_put(np_splitter);
if (ret) {
dev_info(dev, "Missing emac splitter address\n"); dev_info(dev, "Missing emac splitter address\n");
return -EINVAL; return -EINVAL;
} }
...@@ -159,14 +161,17 @@ static int socfpga_dwmac_parse_data(struct socfpga_dwmac *dwmac, struct device * ...@@ -159,14 +161,17 @@ static int socfpga_dwmac_parse_data(struct socfpga_dwmac *dwmac, struct device *
dev_err(dev, dev_err(dev,
"%s: ERROR: missing emac splitter address\n", "%s: ERROR: missing emac splitter address\n",
__func__); __func__);
return -EINVAL; ret = -EINVAL;
goto err_node_put;
} }
dwmac->splitter_base = dwmac->splitter_base =
devm_ioremap_resource(dev, &res_splitter); devm_ioremap_resource(dev, &res_splitter);
if (IS_ERR(dwmac->splitter_base)) if (IS_ERR(dwmac->splitter_base)) {
return PTR_ERR(dwmac->splitter_base); ret = PTR_ERR(dwmac->splitter_base);
goto err_node_put;
}
} }
index = of_property_match_string(np_sgmii_adapter, "reg-names", index = of_property_match_string(np_sgmii_adapter, "reg-names",
...@@ -178,14 +183,17 @@ static int socfpga_dwmac_parse_data(struct socfpga_dwmac *dwmac, struct device * ...@@ -178,14 +183,17 @@ static int socfpga_dwmac_parse_data(struct socfpga_dwmac *dwmac, struct device *
dev_err(dev, dev_err(dev,
"%s: ERROR: failed mapping adapter\n", "%s: ERROR: failed mapping adapter\n",
__func__); __func__);
return -EINVAL; ret = -EINVAL;
goto err_node_put;
} }
dwmac->pcs.sgmii_adapter_base = dwmac->pcs.sgmii_adapter_base =
devm_ioremap_resource(dev, &res_sgmii_adapter); devm_ioremap_resource(dev, &res_sgmii_adapter);
if (IS_ERR(dwmac->pcs.sgmii_adapter_base)) if (IS_ERR(dwmac->pcs.sgmii_adapter_base)) {
return PTR_ERR(dwmac->pcs.sgmii_adapter_base); ret = PTR_ERR(dwmac->pcs.sgmii_adapter_base);
goto err_node_put;
}
} }
index = of_property_match_string(np_sgmii_adapter, "reg-names", index = of_property_match_string(np_sgmii_adapter, "reg-names",
...@@ -197,22 +205,30 @@ static int socfpga_dwmac_parse_data(struct socfpga_dwmac *dwmac, struct device * ...@@ -197,22 +205,30 @@ static int socfpga_dwmac_parse_data(struct socfpga_dwmac *dwmac, struct device *
dev_err(dev, dev_err(dev,
"%s: ERROR: failed mapping tse control port\n", "%s: ERROR: failed mapping tse control port\n",
__func__); __func__);
return -EINVAL; ret = -EINVAL;
goto err_node_put;
} }
dwmac->pcs.tse_pcs_base = dwmac->pcs.tse_pcs_base =
devm_ioremap_resource(dev, &res_tse_pcs); devm_ioremap_resource(dev, &res_tse_pcs);
if (IS_ERR(dwmac->pcs.tse_pcs_base)) if (IS_ERR(dwmac->pcs.tse_pcs_base)) {
return PTR_ERR(dwmac->pcs.tse_pcs_base); ret = PTR_ERR(dwmac->pcs.tse_pcs_base);
goto err_node_put;
}
} }
} }
dwmac->reg_offset = reg_offset; dwmac->reg_offset = reg_offset;
dwmac->reg_shift = reg_shift; dwmac->reg_shift = reg_shift;
dwmac->sys_mgr_base_addr = sys_mgr_base_addr; dwmac->sys_mgr_base_addr = sys_mgr_base_addr;
dwmac->dev = dev; dwmac->dev = dev;
of_node_put(np_sgmii_adapter);
return 0; return 0;
err_node_put:
of_node_put(np_sgmii_adapter);
return ret;
} }
static int socfpga_dwmac_set_phy_mode(struct socfpga_dwmac *dwmac) static int socfpga_dwmac_set_phy_mode(struct socfpga_dwmac *dwmac)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment