diff options
| author | Vladimir Oltean <vladimir.oltean@nxp.com> | 2026-06-10 18:19:37 +0300 |
|---|---|---|
| committer | Vinod Koul <vkoul@kernel.org> | 2026-06-11 12:39:46 +0530 |
| commit | 493f8fc57bf685e23d3c924dbd787249d47fb972 (patch) | |
| tree | 78bc4a8ce4ed1c964a8de3b12762bfde6f71cdca | |
| parent | fdd2913a4e505716dce5c9f89c268628d9a019d5 (diff) | |
phy: lynx-28g: avoid returning NULL in of_xlate() function
Sashiko points out that _of_phy_get() does not support a NULL returned
output from phy_provider->of_xlate(), just a valid pointer or a
pointer-encoded error.
When lynx_28g_probe() -> for_each_available_child_of_node() skips
over lanes which have OF nodes with status = "disabled", the
priv->lane[idx].phy pointer will remain NULL.
This NULL pointer may be propagated to lynx_28g_xlate() if the device
tree contains a phandle to the disabled lane AND fw_devlink did not
block probing for the consumer. In that case, the PHY core will crash
when trying to dereference the NULL phy pointer.
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Link: https://patch.msgid.link/20260610151952.2141019-2-vladimir.oltean@nxp.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
| -rw-r--r-- | drivers/phy/freescale/phy-fsl-lynx-28g.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/phy/freescale/phy-fsl-lynx-28g.c b/drivers/phy/freescale/phy-fsl-lynx-28g.c index 92bfc5f65e0b..cacc128dc96a 100644 --- a/drivers/phy/freescale/phy-fsl-lynx-28g.c +++ b/drivers/phy/freescale/phy-fsl-lynx-28g.c @@ -1435,7 +1435,7 @@ static struct phy *lynx_28g_xlate(struct device *dev, idx < priv->info->first_lane)) return ERR_PTR(-EINVAL); - return priv->lane[idx].phy; + return priv->lane[idx].phy ?: ERR_PTR(-ENODEV); } static int lynx_28g_probe_lane(struct lynx_28g_priv *priv, int id, |
