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

Reply via email to