sfc: mdio_clause45_read errors go unnoticed
Subsystems (2)
PATCH 1/1 sfc: mdio_clause45_read errors go unnoticed
This patch was not tested in any way, but:
since commit 27dd2caca4eabe7c13a052b7456495ba75535e6a ------------------------------>8-------------8<--------------------------------- mdio_clause45_read may return -ERR, but since 'devices' is unsigned, this is not noticed.
Signed-off-by Roel Kluin <[email protected]>
---
drivers/net/sfc/mdio_10g.c +13 -7
@@ -126,23 +126,29 @@ int mdio_clause45_check_mmds(struct efx_nic *efx, unsigned int mmd_mask, unsigned int fatal_mask) { u32 devices; -int mmd =0 , probe_mmd; +int ret, mmd =0 , probe_mmd;/* Historically we have probed the PHYXS to find out what devices are * present,but that doesn't work so well if the PHYXS isn't expected * to exist, if so just find the first item in the list supplied. */ probe_mmd = (mmd_mask &MDIO_MMDREG_DEVS_PHYXS ) ?MDIO_MMD_PHYXS :__ffs (mmd_mask); - devices = (mdio_clause45_read (efx, efx->mii.phy_id, - probe_mmd,MDIO_MMDREG_DEVS0 ) | -mdio_clause45_read (efx, efx->mii.phy_id, - probe_mmd,MDIO_MMDREG_DEVS1 ) <<16 ); -/* Check all the expected MMDs are present */ -if (devices <0 ) { + ret =mdio_clause45_read (efx, efx->mii.phy_id, probe_mmd, +MDIO_MMDREG_DEVS0 ); +if (ret >=0 ) { + devices = ret; + ret =mdio_clause45_read (efx, efx->mii.phy_id, probe_mmd, +MDIO_MMDREG_DEVS1 ); + } + +/* Check all the expected MMDs were present */ +if (ret <0 ) {EFX_ERR (efx,"failed to read devices present\n" );return -EIO ; } + devices |= ret <<16 ; +if ((devices & mmd_mask) != mmd_mask) {EFX_ERR (efx,"required MMDs not present: got %x, " "wanted %x\n" , devices, mmd_mask);
Quoted 6 lines · Roel Kluin
This patch was not tested in any way, but:
since commit
27dd2caca4eabe7c13a052b7456495ba75535e6a------------------------------>8-------------8<---------------------------------mdio_clause45_readmay return-ERR, but since 'devices' is unsigned, this is not noticed.
I already submitted a fix for this. I do need to resubmit it for net-next-2.6 though. Thanks for the reminder.
Ben.
Signature · 3 lines
Ben Hutchings, Senior Software Engineer, Solarflare Communications Not speaking for my employer; that's the marketing department's job. They asked us to note that Solarflare product names are trademarked.