diff options
| author | Marek Vasut <[email protected]> | 2026-03-25 02:09:05 +0100 |
|---|---|---|
| committer | Jerome Forissier <[email protected]> | 2026-03-31 16:54:49 +0200 |
| commit | 1fc34e1bb8c727354b5f5f908ecefadbd6fe1d6b (patch) | |
| tree | e7b185888a3b696c9220063630b31405c2dc1cbe /drivers | |
| parent | d63e58c5f030785c17607f00cbec354e6d84e733 (diff) | |
net: rswitch: Avoid NULL pointer dereference during PHY access
At the very early stage when PHY ID is being auto-detected, the
PHY device is not yet instantiated and rswitch_etha .phydev is
still NULL. Add missing check for this condition and perform C22
fallback access in this PHY ID auto-detection case.
Signed-off-by: Marek Vasut <[email protected]>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/net/rswitch.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/rswitch.c b/drivers/net/rswitch.c index 801c22bbdc7..c51908ed8f3 100644 --- a/drivers/net/rswitch.c +++ b/drivers/net/rswitch.c @@ -482,7 +482,7 @@ static int rswitch_mii_read_c45(struct mii_dev *miidev, int phyad, int devad, in /* Access PHY register */ if (devad != MDIO_DEVAD_NONE) /* Definitelly C45 */ val = rswitch_mii_access_c45(etha_mii, true, phyad, devad, regad, 0); - else if (etha->phydev->is_c45) /* C22 access to C45 PHY */ + else if (etha->phydev && etha->phydev->is_c45) /* C22 access to C45 PHY */ val = rswitch_mii_access_c45(etha_mii, true, phyad, 1, regad, 0); else val = rswitch_mii_access_c22(etha_mii, true, phyad, regad, 0); @@ -516,7 +516,7 @@ int rswitch_mii_write_c45(struct mii_dev *miidev, int phyad, int devad, int rega /* Access PHY register */ if (devad != MDIO_DEVAD_NONE) /* Definitelly C45 */ rswitch_mii_access_c45(etha_mii, false, phyad, devad, regad, data); - else if (etha->phydev->is_c45) /* C22 access to C45 PHY */ + else if (etha->phydev && etha->phydev->is_c45) /* C22 access to C45 PHY */ rswitch_mii_access_c45(etha_mii, false, phyad, 1, regad, data); else rswitch_mii_access_c22(etha_mii, false, phyad, regad, data); |
