git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
USB: ftdi_sio: add Basic Micro ATOM Nano USB2Serial PID
[pandora-kernel.git]
/
drivers
/
usb
/
serial
/
opticon.c
diff --git
a/drivers/usb/serial/opticon.c
b/drivers/usb/serial/opticon.c
index
c248a91
..
d6c5ed6
100644
(file)
--- a/
drivers/usb/serial/opticon.c
+++ b/
drivers/usb/serial/opticon.c
@@
-160,7
+160,11
@@
static int send_control_msg(struct usb_serial_port *port, u8 requesttype,
{
struct usb_serial *serial = port->serial;
int retval;
{
struct usb_serial *serial = port->serial;
int retval;
- u8 buffer[2];
+ u8 *buffer;
+
+ buffer = kzalloc(1, GFP_KERNEL);
+ if (!buffer)
+ return -ENOMEM;
buffer[0] = val;
/* Send the message to the vendor control endpoint
buffer[0] = val;
/* Send the message to the vendor control endpoint
@@
-169,6
+173,7
@@
static int send_control_msg(struct usb_serial_port *port, u8 requesttype,
requesttype,
USB_DIR_OUT|USB_TYPE_VENDOR|USB_RECIP_INTERFACE,
0, 0, buffer, 1, 0);
requesttype,
USB_DIR_OUT|USB_TYPE_VENDOR|USB_RECIP_INTERFACE,
0, 0, buffer, 1, 0);
+ kfree(buffer);
return retval;
}
return retval;
}
@@
-292,7
+297,7
@@
static int opticon_write(struct tty_struct *tty, struct usb_serial_port *port,
if (!dr) {
dev_err(&port->dev, "out of memory\n");
count = -ENOMEM;
if (!dr) {
dev_err(&port->dev, "out of memory\n");
count = -ENOMEM;
- goto error;
+ goto error
_no_dr
;
}
dr->bRequestType = USB_TYPE_VENDOR | USB_RECIP_INTERFACE | USB_DIR_OUT;
}
dr->bRequestType = USB_TYPE_VENDOR | USB_RECIP_INTERFACE | USB_DIR_OUT;
@@
-322,6
+327,8
@@
static int opticon_write(struct tty_struct *tty, struct usb_serial_port *port,
return count;
error:
return count;
error:
+ kfree(dr);
+error_no_dr:
usb_free_urb(urb);
error_no_urb:
kfree(buffer);
usb_free_urb(urb);
error_no_urb:
kfree(buffer);