Skip to content

Commit c912937

Browse files
himadricsjhovold
authored andcommitted
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 <[email protected]> Link: https://lore.kernel.org/r/[email protected] [ johan: simplify write-room error handling further ] Signed-off-by: Johan Hovold <[email protected]>
1 parent a738859 commit c912937

File tree

1 file changed

+28
-39
lines changed

1 file changed

+28
-39
lines changed

drivers/usb/serial/keyspan_pda.c

Lines changed: 28 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -77,36 +77,27 @@ static int keyspan_pda_get_write_room(struct keyspan_pda_private *priv)
7777
{
7878
struct usb_serial_port *port = priv->port;
7979
struct usb_serial *serial = port->serial;
80-
u8 *room;
80+
u8 room;
8181
int rc;
8282

83-
room = kmalloc(1, GFP_KERNEL);
84-
if (!room)
85-
return -ENOMEM;
86-
87-
rc = usb_control_msg(serial->dev,
88-
usb_rcvctrlpipe(serial->dev, 0),
89-
6, /* write_room */
90-
USB_TYPE_VENDOR | USB_RECIP_INTERFACE
91-
| USB_DIR_IN,
92-
0, /* value: 0 means "remaining room" */
93-
0, /* index */
94-
room,
95-
1,
96-
2000);
97-
if (rc != 1) {
98-
if (rc >= 0)
99-
rc = -EIO;
83+
rc = usb_control_msg_recv(serial->dev,
84+
0,
85+
6, /* write_room */
86+
USB_TYPE_VENDOR | USB_RECIP_INTERFACE | USB_DIR_IN,
87+
0, /* value: 0 means "remaining room" */
88+
0, /* index */
89+
&room,
90+
1,
91+
2000,
92+
GFP_KERNEL);
93+
if (rc) {
10094
dev_dbg(&port->dev, "roomquery failed: %d\n", rc);
101-
goto out_free;
95+
return rc;
10296
}
10397

104-
dev_dbg(&port->dev, "roomquery says %d\n", *room);
105-
rc = *room;
106-
out_free:
107-
kfree(room);
98+
dev_dbg(&port->dev, "roomquery says %d\n", room);
10899

109-
return rc;
100+
return room;
110101
}
111102

112103
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,
381372
unsigned char *value)
382373
{
383374
int rc;
384-
u8 *data;
385-
386-
data = kmalloc(1, GFP_KERNEL);
387-
if (!data)
388-
return -ENOMEM;
389-
390-
rc = usb_control_msg(serial->dev, usb_rcvctrlpipe(serial->dev, 0),
391-
3, /* get pins */
392-
USB_TYPE_VENDOR|USB_RECIP_INTERFACE|USB_DIR_IN,
393-
0, 0, data, 1, 2000);
394-
if (rc == 1)
395-
*value = *data;
396-
else if (rc >= 0)
397-
rc = -EIO;
375+
u8 data;
376+
377+
rc = usb_control_msg_recv(serial->dev, 0,
378+
3, /* get pins */
379+
USB_TYPE_VENDOR | USB_RECIP_INTERFACE | USB_DIR_IN,
380+
0,
381+
0,
382+
&data,
383+
1,
384+
2000,
385+
GFP_KERNEL);
386+
if (rc == 0)
387+
*value = data;
398388

399-
kfree(data);
400389
return rc;
401390
}
402391

0 commit comments

Comments
 (0)