]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/usb/serial/option.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6
[linux-2.6-omap-h63xx.git] / drivers / usb / serial / option.c
index 920241897c95538ba400b81038ef5b94d751ec59..e4be2d442b1ebbc6ea3bca507e85d4905d4f526f 100644 (file)
@@ -545,7 +545,7 @@ static void option_indat_callback(struct urb *urb)
        dbg("%s: %p", __func__, urb);
 
        endpoint = usb_pipeendpoint(urb->pipe);
-       port = (struct usb_serial_port *) urb->context;
+       port =  urb->context;
 
        if (status) {
                dbg("%s: nonzero status: %d on endpoint %02x.",
@@ -579,7 +579,7 @@ static void option_outdat_callback(struct urb *urb)
 
        dbg("%s", __func__);
 
-       port = (struct usb_serial_port *) urb->context;
+       port =  urb->context;
 
        usb_serial_port_softint(port);
 
@@ -597,7 +597,7 @@ static void option_instat_callback(struct urb *urb)
 {
        int err;
        int status = urb->status;
-       struct usb_serial_port *port = (struct usb_serial_port *) urb->context;
+       struct usb_serial_port *port =  urb->context;
        struct option_port_private *portdata = usb_get_serial_port_data(port);
        struct usb_serial *serial = port->serial;
 
@@ -656,6 +656,7 @@ static int option_write_room(struct usb_serial_port *port)
 
        portdata = usb_get_serial_port_data(port);
 
+
        for (i=0; i < N_OUT_URB; i++) {
                this_urb = portdata->out_urbs[i];
                if (this_urb && !test_bit(i, &portdata->out_busy))
@@ -677,6 +678,8 @@ static int option_chars_in_buffer(struct usb_serial_port *port)
 
        for (i=0; i < N_OUT_URB; i++) {
                this_urb = portdata->out_urbs[i];
+               /* FIXME: This locking is insufficient as this_urb may
+                  go unused during the test */
                if (this_urb && test_bit(i, &portdata->out_busy))
                        data_len += this_urb->transfer_buffer_length;
        }