Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 242cf670 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

[PATCH] USB: fix up URB_ASYNC_UNLINK usages from the usb-serial drivers

parent b375a049
Loading
Loading
Loading
Loading
+1 −7
Original line number Diff line number Diff line
@@ -383,11 +383,8 @@ static int keyspan_write(struct usb_serial_port *port,
		dbg("%s - endpoint %d flip %d", __FUNCTION__, usb_pipeendpoint(this_urb->pipe), flip);

		if (this_urb->status == -EINPROGRESS) {
			if (this_urb->transfer_flags & URB_ASYNC_UNLINK)
				break;
			if (time_before(jiffies, p_priv->tx_start_time[flip] + 10 * HZ))
				break;
			this_urb->transfer_flags |= URB_ASYNC_UNLINK;
			usb_unlink_urb(this_urb);
			break;
		}
@@ -402,7 +399,6 @@ static int keyspan_write(struct usb_serial_port *port,
		/* send the data out the bulk port */
		this_urb->transfer_buffer_length = todo + dataOffset;

		this_urb->transfer_flags &= ~URB_ASYNC_UNLINK;
		this_urb->dev = port->serial->dev;
		if ((err = usb_submit_urb(this_urb, GFP_ATOMIC)) != 0) {
			dbg("usb_submit_urb(write bulk) failed (%d)", err);
@@ -1119,11 +1115,9 @@ static int keyspan_open (struct usb_serial_port *port, struct file *filp)

static inline void stop_urb(struct urb *urb)
{
	if (urb && urb->status == -EINPROGRESS) {
		urb->transfer_flags &= ~URB_ASYNC_UNLINK;
	if (urb && urb->status == -EINPROGRESS)
		usb_kill_urb(urb);
}
}

static void keyspan_close(struct usb_serial_port *port, struct file *filp)
{
+1 −7
Original line number Diff line number Diff line
@@ -273,12 +273,9 @@ static int option_write(struct usb_serial_port *port,

		this_urb = portdata->out_urbs[i];
		if (this_urb->status == -EINPROGRESS) {
			if (this_urb->transfer_flags & URB_ASYNC_UNLINK)
				continue;
			if (time_before(jiffies,
					portdata->tx_start_time[i] + 10 * HZ))
				continue;
			this_urb->transfer_flags |= URB_ASYNC_UNLINK;
			usb_unlink_urb(this_urb);
			continue;
		}
@@ -293,7 +290,6 @@ static int option_write(struct usb_serial_port *port,
		memcpy (this_urb->transfer_buffer, buf, todo);
		this_urb->transfer_buffer_length = todo;

		this_urb->transfer_flags &= ~URB_ASYNC_UNLINK;
		this_urb->dev = port->serial->dev;
		err = usb_submit_urb(this_urb, GFP_ATOMIC);
		if (err) {
@@ -513,11 +509,9 @@ static int option_open(struct usb_serial_port *port, struct file *filp)

static inline void stop_urb(struct urb *urb)
{
	if (urb && urb->status == -EINPROGRESS) {
		urb->transfer_flags &= ~URB_ASYNC_UNLINK;
	if (urb && urb->status == -EINPROGRESS)
		usb_kill_urb(urb);
}
}

static void option_close(struct usb_serial_port *port, struct file *filp)
{