Re: [PATCH net v2 2/2] net: usb: asix: ax88772: Increase phy_name size

From: Andy Shevchenko
Date: Wed Mar 19 2025 - 14:36:43 EST


Wed, Mar 19, 2025 at 05:13:52PM +0000, Russell King (Oracle) kirjoitti:
> On Wed, Mar 19, 2025 at 06:22:54PM +0200, Andy Shevchenko wrote:
> > On Wed, Mar 19, 2025 at 02:43:40PM +0000, Russell King (Oracle) wrote:
> > > On Wed, Mar 19, 2025 at 12:54:34PM +0200, Andy Shevchenko wrote:
> > > > - char phy_name[20];
> > > > + char phy_name[MII_BUS_ID_SIZE + 3];
> > >
> > > MII_BUS_ID_SIZE is sized to 61, and is what is used in struct
> > > mii_bus::id. Why there a +3 here, which seems like a random constant to
> > > make it 64-bit aligned in size. If we have need to increase
> > > MII_BUS_ID_SIZE in the future, this kind of alignment then goes
> > > wrong...
> > >
> > > If the intention is to align it to 64-bit then there's surely a better
> > > and future-proof ways to do that.
> >
> > Nope, intention is to cover the rest after %s.
>
> Oops, I had missed that MII_BUS_ID_SIZE is the size of the "%s" part.
> I think linux/phy.h should declare:
>
> #define PHY_ID_SIZE (MII_BUS_ID_SIZE + 3)
>
> to cater for the ":XX" that PHY_ID_FMT adds.
>
> So the above would become:
>
> char phy_name[PHY_ID_SIZE];
>
> I wonder whether keeping PHY_ID_FMT as-is, but casting the argument
> to a u8 would solve the issue?
>
> Maybe something like:
>
> static inline void
> phy_format_id(char *dst, size_t n, const char *mii_bus_id, u8 phy_dev_id)
> {
> BUILD_BUG_ON_MSG(n < PHY_ID_SIZE, "PHY ID destination too small");
> snprintf(dat, n, PHY_ID_FMT, mii_bus_id, phy_dev_id);
> }
>
> would solve it?

Would you like to send a formal patch? I will base my fix on top of it and test
that in my case.

--
With Best Regards,
Andy Shevchenko