The parent MDIO bus may never show up (such as if there is an error
while probing it). Make sure to return an error instead of crashing.
Fixes: 8880edba06d5 ("net: add MDIO_MUX DM class")
Signed-off-by: Sean Anderson <[email protected]>
---
(no changes since v1)
net/mdio-mux-uclass.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/net/mdio-mux-uclass.c b/net/mdio-mux-uclass.c
index ee188b504d1..14143ca0ab6 100644
--- a/net/mdio-mux-uclass.c
+++ b/net/mdio-mux-uclass.c
@@ -86,6 +86,9 @@ static int mmux_read(struct udevice *ch, int addr, int devad,
struct udevice *parent_mdio = mmux_get_parent_mdio(mux);
int err;
+ if (!parent_mdio)
+ return -ENODEV;
+
err = mmux_change_sel(ch, true);
if (err)
return err;
@@ -104,6 +107,9 @@ static int mmux_write(struct udevice *ch, int addr, int
devad,
struct udevice *parent_mdio = mmux_get_parent_mdio(mux);
int err;
+ if (!parent_mdio)
+ return -ENODEV;
+
err = mmux_change_sel(ch, true);
if (err)
return err;
@@ -121,6 +127,9 @@ static int mmux_reset(struct udevice *ch)
struct udevice *parent_mdio = mmux_get_parent_mdio(mux);
int err;
+ if (!parent_mdio)
+ return -ENODEV;
+
/* reset is optional, if it's not implemented just exit */
if (!mdio_get_ops(parent_mdio)->reset)
return 0;
--
2.53.0