]> git.ipfire.org Git - thirdparty/linux.git/commit
phy: lynx-28g: skip CDR lock workaround for lanes disabled in the device tree
authorVladimir Oltean <vladimir.oltean@nxp.com>
Thu, 26 Feb 2026 18:28:53 +0000 (20:28 +0200)
committerVinod Koul <vkoul@kernel.org>
Fri, 27 Feb 2026 13:51:01 +0000 (19:21 +0530)
commita258d843a3e4cb687da19437f8f81fee55ad7d35
tree6f9ae041a2964b0c506cb1c5ffabd047b1504491
parent48fafffcf29bb968c9dee6bf507c1e57d0ccb6b5
phy: lynx-28g: skip CDR lock workaround for lanes disabled in the device tree

The blamed commit introduced support for specifying individual lanes as
OF nodes in the device, and these can have status = "disabled".

When that happens, for_each_available_child_of_node() skips them and
lynx_28g_probe_lane() -> devm_phy_create() is not called, so lane->phy
will be NULL. Yet it will be dereferenced in lynx_28g_cdr_lock_check(),
resulting in a crash.

This used to be well handled in v3 of that patch:
https://lore.kernel.org/linux-phy/20250926180505.760089-14-vladimir.oltean@nxp.com/
but until v5 was merged, the logic to support per-lane OF nodes was
split into a separate change, and the per-SoC compatible strings patch
was deferred to a "part 2" set. The splitting was done improperly, and
that handling of NULL lane->phy pointers was not integrated into the
proper commit.

Fixes: 7df7d58abbd6 ("phy: lynx-28g: support individual lanes as OF PHY providers")
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Link: https://patch.msgid.link/20260226182853.1103616-1-vladimir.oltean@nxp.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/phy/freescale/phy-fsl-lynx-28g.c