mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-02-18 06:58:54 +00:00
net: enetc: Fix use after free issue in fsl_enetc.c
If ethernet connected to SFP, like this: &enetc_port0 { phy-connection-type = "sgmii"; sfp = <&sfp0>; managed = "in-band-status"; status = "okay"; }; Then enetc_config_phy returns -ENODEV and the memory containing the mdio interface is freed. It's better to unregister and free mdio resources. Signed-off-by: Siarhei Yasinski <siarhei.yasinski@sintecs.eu> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Ramon Fried <rfried.dev@gmail.com> Signed-off-by: Peng Fan <peng.fan@nxp.com>
This commit is contained in:
parent
6f6fbb334c
commit
5025224fad
1 changed files with 7 additions and 1 deletions
|
@ -22,6 +22,8 @@
|
|||
|
||||
#define ENETC_DRIVER_NAME "enetc_eth"
|
||||
|
||||
static int enetc_remove(struct udevice *dev);
|
||||
|
||||
/*
|
||||
* sets the MAC address in IERB registers, this setting is persistent and
|
||||
* carried over to Linux.
|
||||
|
@ -319,6 +321,7 @@ static int enetc_config_phy(struct udevice *dev)
|
|||
static int enetc_probe(struct udevice *dev)
|
||||
{
|
||||
struct enetc_priv *priv = dev_get_priv(dev);
|
||||
int res;
|
||||
|
||||
if (ofnode_valid(dev_ofnode(dev)) && !ofnode_is_available(dev_ofnode(dev))) {
|
||||
enetc_dbg(dev, "interface disabled\n");
|
||||
|
@ -350,7 +353,10 @@ static int enetc_probe(struct udevice *dev)
|
|||
|
||||
enetc_start_pcs(dev);
|
||||
|
||||
return enetc_config_phy(dev);
|
||||
res = enetc_config_phy(dev);
|
||||
if(res)
|
||||
enetc_remove(dev);
|
||||
return res;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Add table
Reference in a new issue