Merge 3.9-rc4 into usb-next
This picks up the fixes we had for USB in 3.9-rc4 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
@@ -219,7 +219,6 @@ struct moschip_port {
|
||||
char open;
|
||||
char open_ports;
|
||||
wait_queue_head_t wait_chase; /* for handling sleeping while waiting for chase to finish */
|
||||
wait_queue_head_t delta_msr_wait; /* for handling sleeping while waiting for msr change to happen */
|
||||
int delta_msr_cond;
|
||||
struct async_icount icount;
|
||||
struct usb_serial_port *port; /* loop back to the owner of this object */
|
||||
@@ -423,6 +422,9 @@ static void mos7840_handle_new_msr(struct moschip_port *port, __u8 new_msr)
|
||||
icount->rng++;
|
||||
smp_wmb();
|
||||
}
|
||||
|
||||
mos7840_port->delta_msr_cond = 1;
|
||||
wake_up_interruptible(&port->port->delta_msr_wait);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1127,7 +1129,6 @@ static int mos7840_open(struct tty_struct *tty, struct usb_serial_port *port)
|
||||
|
||||
/* initialize our wait queues */
|
||||
init_waitqueue_head(&mos7840_port->wait_chase);
|
||||
init_waitqueue_head(&mos7840_port->delta_msr_wait);
|
||||
|
||||
/* initialize our icount structure */
|
||||
memset(&(mos7840_port->icount), 0x00, sizeof(mos7840_port->icount));
|
||||
@@ -2016,8 +2017,6 @@ static void mos7840_change_port_settings(struct tty_struct *tty,
|
||||
mos7840_port->read_urb_busy = false;
|
||||
}
|
||||
}
|
||||
wake_up(&mos7840_port->delta_msr_wait);
|
||||
mos7840_port->delta_msr_cond = 1;
|
||||
dev_dbg(&port->dev, "%s - mos7840_port->shadowLCR is End %x\n", __func__,
|
||||
mos7840_port->shadowLCR);
|
||||
}
|
||||
@@ -2218,13 +2217,18 @@ static int mos7840_ioctl(struct tty_struct *tty,
|
||||
while (1) {
|
||||
/* interruptible_sleep_on(&mos7840_port->delta_msr_wait); */
|
||||
mos7840_port->delta_msr_cond = 0;
|
||||
wait_event_interruptible(mos7840_port->delta_msr_wait,
|
||||
(mos7840_port->
|
||||
wait_event_interruptible(port->delta_msr_wait,
|
||||
(port->serial->disconnected ||
|
||||
mos7840_port->
|
||||
delta_msr_cond == 1));
|
||||
|
||||
/* see if a signal did it */
|
||||
if (signal_pending(current))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
if (port->serial->disconnected)
|
||||
return -EIO;
|
||||
|
||||
cnow = mos7840_port->icount;
|
||||
smp_rmb();
|
||||
if (cnow.rng == cprev.rng && cnow.dsr == cprev.dsr &&
|
||||
|
Reference in New Issue
Block a user