linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/2] fixes for yt8511 phy driver
@ 2021-05-25 20:33 Peter Geis
  2021-05-25 20:33 ` [PATCH v2 1/2] net: phy: fix yt8511 clang uninitialized variable warning Peter Geis
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Peter Geis @ 2021-05-25 20:33 UTC (permalink / raw)
  To: Andrew Lunn, Heiner Kallweit, Russell King, David S . Miller,
	Jakub Kicinski, Nathan Chancellor
  Cc: netdev, linux-kernel, clang-built-linux, Peter Geis

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


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v2 1/2] net: phy: fix yt8511 clang uninitialized variable warning
  2021-05-25 20:33 [PATCH v2 0/2] fixes for yt8511 phy driver Peter Geis
@ 2021-05-25 20:33 ` Peter Geis
  2021-05-25 20:33 ` [PATCH v2 2/2] net: phy: abort loading yt8511 driver in unsupported modes Peter Geis
  2021-05-26 19:27 ` [PATCH v2 0/2] fixes for yt8511 phy driver Jakub Kicinski
  2 siblings, 0 replies; 5+ messages in thread
From: Peter Geis @ 2021-05-25 20:33 UTC (permalink / raw)
  To: Andrew Lunn, Heiner Kallweit, Russell King, David S . Miller,
	Jakub Kicinski, Nathan Chancellor
  Cc: netdev, linux-kernel, clang-built-linux, Peter Geis, kernel test robot

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 <lkp@intel.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Peter Geis <pgwipeout@gmail.com>
---
 drivers/net/phy/motorcomm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/phy/motorcomm.c b/drivers/net/phy/motorcomm.c
index 796b68f4b499..68cd19540c67 100644
--- a/drivers/net/phy/motorcomm.c
+++ b/drivers/net/phy/motorcomm.c
@@ -50,8 +50,8 @@ static int yt8511_write_page(struct phy_device *phydev, int page)
 
 static int yt8511_config_init(struct phy_device *phydev)
 {
+	int oldpage, ret = 0;
 	unsigned int ge, fe;
-	int ret, oldpage;
 
 	/* set clock mode to 125mhz */
 	oldpage = phy_select_page(phydev, YT8511_EXT_CLK_GATE);
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v2 2/2] net: phy: abort loading yt8511 driver in unsupported modes
  2021-05-25 20:33 [PATCH v2 0/2] fixes for yt8511 phy driver Peter Geis
  2021-05-25 20:33 ` [PATCH v2 1/2] net: phy: fix yt8511 clang uninitialized variable warning Peter Geis
@ 2021-05-25 20:33 ` Peter Geis
  2021-05-26 19:27 ` [PATCH v2 0/2] fixes for yt8511 phy driver Jakub Kicinski
  2 siblings, 0 replies; 5+ messages in thread
From: Peter Geis @ 2021-05-25 20:33 UTC (permalink / raw)
  To: Andrew Lunn, Heiner Kallweit, Russell King, David S . Miller,
	Jakub Kicinski, Nathan Chancellor
  Cc: netdev, linux-kernel, clang-built-linux, Peter Geis, kernel test robot

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 <lkp@intel.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Peter Geis <pgwipeout@gmail.com>
---
 drivers/net/phy/motorcomm.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/drivers/net/phy/motorcomm.c b/drivers/net/phy/motorcomm.c
index 68cd19540c67..7e6ac2c5e27e 100644
--- a/drivers/net/phy/motorcomm.c
+++ b/drivers/net/phy/motorcomm.c
@@ -53,15 +53,10 @@ static int yt8511_config_init(struct phy_device *phydev)
 	int oldpage, ret = 0;
 	unsigned int ge, fe;
 
-	/* set clock mode to 125mhz */
 	oldpage = phy_select_page(phydev, YT8511_EXT_CLK_GATE);
 	if (oldpage < 0)
 		goto err_restore_page;
 
-	ret = __phy_modify(phydev, YT8511_PAGE, 0, YT8511_CLK_125M);
-	if (ret < 0)
-		goto err_restore_page;
-
 	/* set rgmii delay mode */
 	switch (phydev->interface) {
 	case PHY_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;
+		goto err_restore_page;
 	}
 
 	ret = __phy_modify(phydev, YT8511_PAGE, (YT8511_DELAY_RX | YT8511_DELAY_GE_TX_EN), ge);
 	if (ret < 0)
 		goto err_restore_page;
 
+	/* set clock mode to 125mhz */
+	ret = __phy_modify(phydev, YT8511_PAGE, 0, YT8511_CLK_125M);
+	if (ret < 0)
+		goto err_restore_page;
+
 	/* fast ethernet delay is in a separate page */
 	ret = __phy_write(phydev, YT8511_PAGE_SELECT, YT8511_EXT_DELAY_DRIVE);
 	if (ret < 0)
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 0/2] fixes for yt8511 phy driver
  2021-05-25 20:33 [PATCH v2 0/2] fixes for yt8511 phy driver Peter Geis
  2021-05-25 20:33 ` [PATCH v2 1/2] net: phy: fix yt8511 clang uninitialized variable warning Peter Geis
  2021-05-25 20:33 ` [PATCH v2 2/2] net: phy: abort loading yt8511 driver in unsupported modes Peter Geis
@ 2021-05-26 19:27 ` Jakub Kicinski
  2021-05-26 20:15   ` Peter Geis
  2 siblings, 1 reply; 5+ messages in thread
From: Jakub Kicinski @ 2021-05-26 19:27 UTC (permalink / raw)
  To: Peter Geis
  Cc: Andrew Lunn, Heiner Kallweit, Russell King, David S . Miller,
	Nathan Chancellor, netdev, linux-kernel, clang-built-linux

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.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 0/2] fixes for yt8511 phy driver
  2021-05-26 19:27 ` [PATCH v2 0/2] fixes for yt8511 phy driver Jakub Kicinski
@ 2021-05-26 20:15   ` Peter Geis
  0 siblings, 0 replies; 5+ messages in thread
From: Peter Geis @ 2021-05-26 20:15 UTC (permalink / raw)
  To: Jakub Kicinski
  Cc: Andrew Lunn, Heiner Kallweit, Russell King, David S . Miller,
	Nathan Chancellor, Linux Kernel Network Developers,
	Linux Kernel Mailing List, clang-built-linux

On Wed, May 26, 2021 at 3:27 PM Jakub Kicinski <kuba@kernel.org> wrote:
>
> 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.

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.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-05-26 20:15 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-25 20:33 [PATCH v2 0/2] fixes for yt8511 phy driver Peter Geis
2021-05-25 20:33 ` [PATCH v2 1/2] net: phy: fix yt8511 clang uninitialized variable warning Peter Geis
2021-05-25 20:33 ` [PATCH v2 2/2] net: phy: abort loading yt8511 driver in unsupported modes Peter Geis
2021-05-26 19:27 ` [PATCH v2 0/2] fixes for yt8511 phy driver Jakub Kicinski
2021-05-26 20:15   ` Peter Geis

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).