Skip to content

Commit 6199727

Browse files
andy-shevkuba-moo
authored andcommitted
net: usb: asix: ax88772: Increase phy_name size
GCC compiler (Debian 14.2.0-17) is not happy about printing into a too short buffer (when build with `make W=1`): drivers/net/usb/ax88172a.c:311:9: note: ‘snprintf’ output between 4 and 66 bytes into a destination of size 20 Indeed, the buffer size is chosen based on some assumptions, while in general the assigned name might not fit. Increase the buffer size to cover the minimum required one. With that, change snprintf() to use sizeof() instead of the hard coded value. While at it, make sure that the PHY address is not bigger than the allowed maximum. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Link: https://patch.msgid.link/20250324144751.1271761-3-andriy.shevchenko@linux.intel.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent 2c5ac02 commit 6199727

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-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,

0 commit comments

Comments
 (0)