Re: [PATCH v2 2/6] Input: joystick - use usb_make_subpath()

From: Dmitry Torokhov

Date: Wed Oct 21 2026 - 13:04:00 EST


On Wed, Oct 21, 2026 at 03:21:28PM +0200, Alejandro Colomar wrote:
> Hi Shihuang,
>
> > Date: 2026-10-21 20:31:42+0800
> > From: Shihuang Liu <shlomojune6@xxxxxxxxx>
> >
> > The pxrc and xpad drivers build their input device physical paths
> > by appending "/input0" with strlcat() after usb_make_path().
> >
> > In preparation for removing the deprecated strlcat() API [1],
> > replace each pair of calls with usb_make_subpath(). The helper
> > formats the USB path and the "input0" subpath in one call,
> > avoiding a separate buffer scan and append operation.
> >
> > Link: https://github.com/KSPP/linux/issues/370 [1]
> > Signed-off-by: Shihuang Liu <shlomojune6@xxxxxxxxx>
> > ---
> > drivers/input/joystick/pxrc.c | 3 +--
> > drivers/input/joystick/xpad.c | 3 +--
> > 2 files changed, 2 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/input/joystick/pxrc.c b/drivers/input/joystick/pxrc.c
> > index 52d9eab667b7a..1a11e73d7cd04 100644
> > --- a/drivers/input/joystick/pxrc.c
> > +++ b/drivers/input/joystick/pxrc.c
> > @@ -169,8 +169,7 @@ static int pxrc_probe(struct usb_interface *intf,
> >
> > pxrc->input->name = "PXRC Flight Controller Adapter";
> >
> > - usb_make_path(udev, pxrc->phys, sizeof(pxrc->phys));
> > - strlcat(pxrc->phys, "/input0", sizeof(pxrc->phys));
> > + usb_make_subpath(udev, pxrc->phys, sizeof(pxrc->phys), "input0");
>
> To be honest, I think the composed approach is more readable. You don't
> need to learn a new _subpath function with all the details it has.
>
> Everyone knows what a str*cat() (or str*cpy, FWIW) function does.
>
> I'd rather improve this by adding strscat(). The reason for removing
> strlcat(3) is that it is vulnerable to DoS, and that it is inefficient,
> but it is good at producing readable code, and a replacement should not
> degrade that.

Well, there is absolutely no performance concerns in this code, so
another option is to simply leave it as is. I see no benefit here from
using yet another variant of str*cat().

Thanks.

--
Dmitry