From: Peter Geis <hidden> Date: 2021-05-25 20:33:26
The Intel clang bot caught a few uninitialized variables in the new
Motorcomm driver. While investigating the issue, it was found that the
driver would have unintended effects when used in an unsupported mode.
Fixed the uninitialized ret variable and abort loading the driver in
unsupported modes.
Thank you to the Intel clang bot for catching these.
Changelog:
V2:
- fix variable order
- add Andrew Lunn's reviewed-by tags
Peter Geis (2):
net: phy: fix yt8511 clang uninitialized variable warning
net: phy: abort loading yt8511 driver in unsupported modes
drivers/net/phy/motorcomm.c | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
--
2.25.1
From: Peter Geis <hidden> Date: 2021-05-25 20:33:28
clang doesn't preinitialize variables. If phy_select_page failed and
returned an error, phy_restore_page would be called with `ret` being
uninitialized.
Even though phy_restore_page won't use `ret` in this scenario,
initialize `ret` to silence the warning.
Fixes: b1b41c047f73 ("net: phy: add driver for Motorcomm yt8511 phy")
Reported-by: kernel test robot <redacted>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Peter Geis <redacted>
---
drivers/net/phy/motorcomm.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
@@ -50,8 +50,8 @@ static int yt8511_write_page(struct phy_device *phydev, int page)staticintyt8511_config_init(structphy_device*phydev){+intoldpage,ret=0;unsignedintge,fe;-intret,oldpage;/* set clock mode to 125mhz */oldpage=phy_select_page(phydev,YT8511_EXT_CLK_GATE);
From: Peter Geis <hidden> Date: 2021-05-25 20:33:39
While investigating the clang `ge` uninitialized variable report, it was
discovered the default switch would have unintended consequences. Due to
the switch to __phy_modify, the driver would modify the ID values in the
default scenario.
Fix this by promoting the interface mode switch and aborting when the
mode is not a supported RGMII mode.
This prevents the `ge` and `fe` variables from ever being used
uninitialized.
Fixes: b1b41c047f73 ("net: phy: add driver for Motorcomm yt8511 phy")
Reported-by: kernel test robot <redacted>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Peter Geis <redacted>
---
drivers/net/phy/motorcomm.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
@@ -53,15 +53,10 @@ static int yt8511_config_init(struct phy_device *phydev)intoldpage,ret=0;unsignedintge,fe;-/* set clock mode to 125mhz */oldpage=phy_select_page(phydev,YT8511_EXT_CLK_GATE);if(oldpage<0)gotoerr_restore_page;-ret=__phy_modify(phydev,YT8511_PAGE,0,YT8511_CLK_125M);-if(ret<0)-gotoerr_restore_page;-/* set rgmii delay mode */switch(phydev->interface){casePHY_INTERFACE_MODE_RGMII:
@@ -80,14 +75,20 @@ static int yt8511_config_init(struct phy_device *phydev)ge=YT8511_DELAY_RX|YT8511_DELAY_GE_TX_EN;fe=YT8511_DELAY_FE_TX_EN;break;-default:/* leave everything alone in other modes */-break;+default:/* do not support other modes */+ret=-EOPNOTSUPP;+gotoerr_restore_page;}ret=__phy_modify(phydev,YT8511_PAGE,(YT8511_DELAY_RX|YT8511_DELAY_GE_TX_EN),ge);if(ret<0)gotoerr_restore_page;+/* set clock mode to 125mhz */+ret=__phy_modify(phydev,YT8511_PAGE,0,YT8511_CLK_125M);+if(ret<0)+gotoerr_restore_page;+/* fast ethernet delay is in a separate page */ret=__phy_write(phydev,YT8511_PAGE_SELECT,YT8511_EXT_DELAY_DRIVE);if(ret<0)
From: Jakub Kicinski <kuba@kernel.org> Date: 2021-05-26 19:27:36
On Tue, 25 May 2021 16:33:12 -0400 Peter Geis wrote:
The Intel clang bot caught a few uninitialized variables in the new
Motorcomm driver. While investigating the issue, it was found that the
driver would have unintended effects when used in an unsupported mode.
Fixed the uninitialized ret variable and abort loading the driver in
unsupported modes.
Thank you to the Intel clang bot for catching these.
Fixes tag need work, the hashes don't match the ones in net-next.
From: Peter Geis <hidden> Date: 2021-05-26 20:15:30
On Wed, May 26, 2021 at 3:27 PM Jakub Kicinski [off-list ref] wrote:
On Tue, 25 May 2021 16:33:12 -0400 Peter Geis wrote:
quoted
The Intel clang bot caught a few uninitialized variables in the new
Motorcomm driver. While investigating the issue, it was found that the
driver would have unintended effects when used in an unsupported mode.
Fixed the uninitialized ret variable and abort loading the driver in
unsupported modes.
Thank you to the Intel clang bot for catching these.
Fixes tag need work, the hashes don't match the ones in net-next.
It seems when I asked git for the hash for that patch, it grabbed my
original patch which was against linux-next.
Apologies for the confusion.