USB: serial: keyspan_pda: use usb_control_msg_recv()
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@gmail.com> Link: https://lore.kernel.org/r/20210801203122.3515-6-himadrispandya@gmail.com [ johan: simplify write-room error handling further ] Signed-off-by: Johan Hovold <johan@kernel.org>
This commit is contained in:
parent
a738859264
commit
c9129371cb
|
@ -77,36 +77,27 @@ 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;
|
||||
return rc;
|
||||
}
|
||||
|
||||
dev_dbg(&port->dev, "roomquery says %d\n", *room);
|
||||
rc = *room;
|
||||
out_free:
|
||||
kfree(room);
|
||||
dev_dbg(&port->dev, "roomquery says %d\n", room);
|
||||
|
||||
return rc;
|
||||
return room;
|
||||
}
|
||||
|
||||
static void keyspan_pda_request_unthrottle(struct work_struct *work)
|
||||
|
@ -381,22 +372,20 @@ static int keyspan_pda_get_modem_info(struct usb_serial *serial,
|
|||
unsigned char *value)
|
||||
{
|
||||
int rc;
|
||||
u8 *data;
|
||||
u8 data;
|
||||
|
||||
data = kmalloc(1, GFP_KERNEL);
|
||||
if (!data)
|
||||
return -ENOMEM;
|
||||
rc = usb_control_msg_recv(serial->dev, 0,
|
||||
3, /* get pins */
|
||||
USB_TYPE_VENDOR | USB_RECIP_INTERFACE | USB_DIR_IN,
|
||||
0,
|
||||
0,
|
||||
&data,
|
||||
1,
|
||||
2000,
|
||||
GFP_KERNEL);
|
||||
if (rc == 0)
|
||||
*value = data;
|
||||
|
||||
rc = usb_control_msg(serial->dev, usb_rcvctrlpipe(serial->dev, 0),
|
||||
3, /* get pins */
|
||||
USB_TYPE_VENDOR|USB_RECIP_INTERFACE|USB_DIR_IN,
|
||||
0, 0, data, 1, 2000);
|
||||
if (rc == 1)
|
||||
*value = *data;
|
||||
else if (rc >= 0)
|
||||
rc = -EIO;
|
||||
|
||||
kfree(data);
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue