Skip to content

Commit a19f40d

Browse files
committed
Merge branch 'net-usb-asix-ax88772-fix-potential-string-cut'
Andy Shevchenko says: ==================== net: usb: asix: ax88772: Fix potential string cut The agreement and also PHY_MAX_ADDR limit suggest that the PHY address can't occupy more than two hex digits. In some cases GCC complains about potential string cut. In course of fixing this, introduce the PHY_ID_SIZE predefined constant to make it easier for the users to know the bare minimum for the buffer that holds PHY ID string (patch 1). With that, fix the ASIX driver that triggers GCC accordingly (patch 2). ==================== Link: https://patch.msgid.link/20250324144751.1271761-1-andriy.shevchenko@linux.intel.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2 parents 4f74a45 + 6199727 commit a19f40d

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

drivers/net/usb/ax88172a.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
struct ax88172a_private {
1919
struct mii_bus *mdio;
2020
struct phy_device *phydev;
21-
char phy_name[20];
22-
u16 phy_addr;
21+
char phy_name[PHY_ID_SIZE];
22+
u8 phy_addr;
2323
u16 oldmode;
2424
int use_embdphy;
2525
struct asix_rx_fixup_info rx_fixup_info;
@@ -210,7 +210,11 @@ static int ax88172a_bind(struct usbnet *dev, struct usb_interface *intf)
210210
ret = asix_read_phy_addr(dev, priv->use_embdphy);
211211
if (ret < 0)
212212
goto free;
213-
213+
if (ret >= PHY_MAX_ADDR) {
214+
netdev_err(dev->net, "Invalid PHY address %#x\n", ret);
215+
ret = -ENODEV;
216+
goto free;
217+
}
214218
priv->phy_addr = ret;
215219

216220
ax88172a_reset_phy(dev, priv->use_embdphy);
@@ -308,7 +312,7 @@ static int ax88172a_reset(struct usbnet *dev)
308312
rx_ctl);
309313

310314
/* Connect to PHY */
311-
snprintf(priv->phy_name, 20, PHY_ID_FMT,
315+
snprintf(priv->phy_name, sizeof(priv->phy_name), PHY_ID_FMT,
312316
priv->mdio->id, priv->phy_addr);
313317

314318
priv->phydev = phy_connect(dev->net, priv->phy_name,

include/linux/phy.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,7 @@ static inline long rgmii_clock(int speed)
292292

293293
/* Used when trying to connect to a specific phy (mii bus id:phy device id) */
294294
#define PHY_ID_FMT "%s:%02x"
295+
#define PHY_ID_SIZE (MII_BUS_ID_SIZE + 3)
295296

296297
#define MII_BUS_ID_SIZE 61
297298

0 commit comments

Comments
 (0)