Re: [PATCH v2 5/6] USB: serial: keyspan_pda: use usb_control_msg_recv()
From: Johan Hovold
Date: Tue Sep 21 2021 - 08:27:09 EST
On Mon, Aug 02, 2021 at 02:01:21AM +0530, Himadri Pandya wrote:
> Use the wrapper function usb_control_msg_recv() that accepts stack
> variables and remove dma buffers from callers of usb_control_msg().
>
> Signed-off-by: Himadri Pandya <himadrispandya@xxxxxxxxx>
> ---
> Changes in v2:
> - Rebase the patch on top of recent changes
> - Drop unrelated style changes
> ---
> drivers/usb/serial/keyspan_pda.c | 70 ++++++++++++++------------------
> 1 file changed, 31 insertions(+), 39 deletions(-)
>
> diff --git a/drivers/usb/serial/keyspan_pda.c b/drivers/usb/serial/keyspan_pda.c
> index 39b0f5f344c2..831dc5f42dea 100644
> --- a/drivers/usb/serial/keyspan_pda.c
> +++ b/drivers/usb/serial/keyspan_pda.c
> @@ -77,35 +77,28 @@ static int keyspan_pda_get_write_room(struct keyspan_pda_private *priv)
> {
> struct usb_serial_port *port = priv->port;
> struct usb_serial *serial = port->serial;
> - u8 *room;
> + u8 room;
> int rc;
>
> - room = kmalloc(1, GFP_KERNEL);
> - if (!room)
> - return -ENOMEM;
> -
> - rc = usb_control_msg(serial->dev,
> - usb_rcvctrlpipe(serial->dev, 0),
> - 6, /* write_room */
> - USB_TYPE_VENDOR | USB_RECIP_INTERFACE
> - | USB_DIR_IN,
> - 0, /* value: 0 means "remaining room" */
> - 0, /* index */
> - room,
> - 1,
> - 2000);
> - if (rc != 1) {
> - if (rc >= 0)
> - rc = -EIO;
> + rc = usb_control_msg_recv(serial->dev,
> + 0,
> + 6, /* write_room */
> + USB_TYPE_VENDOR | USB_RECIP_INTERFACE
> + | USB_DIR_IN,
> + 0, /* value: 0 means "remaining room" */
> + 0, /* index */
> + &room,
> + 1,
> + 2000,
> + GFP_KERNEL);
> + if (rc) {
> dev_dbg(&port->dev, "roomquery failed: %d\n", rc);
> - goto out_free;
> + goto out;
> }
>
> - dev_dbg(&port->dev, "roomquery says %d\n", *room);
> - rc = *room;
> -out_free:
> - kfree(room);
> -
> + dev_dbg(&port->dev, "roomquery says %d\n", room);
> + rc = room;
> +out:
I changed this to just return rc in the error path above directly
instead.
> return rc;
> }
Now applied, thanks.
Johan