mirror of
https://github.com/torvalds/linux.git
synced 2026-09-14 16:10:02 +02:00
net: pcs: mtk-lynxi: check regmap reads in mtk_pcs_lynxi_get_state()
mtk_pcs_lynxi_get_state() ignores regmap_read()'s return value; a failed read leaves bm and adv holding uninitialized stack values which are then decoded into the reported link state. The regmaps backing the MT7531 SGMII PCS instances sit on an MDIO bus where reads can fail. Check both reads and report the link as down on error; phylink presets state->link before the callback, so a bare return would leave a failed read reported as link-up. Signed-off-by: Daniel Golle <daniel@makrotopia.org> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Link: https://patch.msgid.link/fce70657fc03bbaf60a04c0fbf2f418531135c4f.1785811140.git.daniel@makrotopia.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
0023e4c617
commit
5cc65c01cd
|
|
@ -113,8 +113,11 @@ static void mtk_pcs_lynxi_get_state(struct phylink_pcs *pcs,
|
|||
unsigned int bm, adv;
|
||||
|
||||
/* Read the BMSR and LPA */
|
||||
regmap_read(mpcs->regmap, SGMSYS_PCS_CONTROL_1, &bm);
|
||||
regmap_read(mpcs->regmap, SGMSYS_PCS_ADVERTISE, &adv);
|
||||
if (regmap_read(mpcs->regmap, SGMSYS_PCS_CONTROL_1, &bm) ||
|
||||
regmap_read(mpcs->regmap, SGMSYS_PCS_ADVERTISE, &adv)) {
|
||||
state->link = false;
|
||||
return;
|
||||
}
|
||||
|
||||
phylink_mii_c22_pcs_decode_state(state, neg_mode,
|
||||
FIELD_GET(SGMII_BMSR, bm),
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user