diff options
| -rw-r--r-- | drivers/usb/serial/f81232.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/usb/serial/f81232.c b/drivers/usb/serial/f81232.c index b1b2dc64b50b..a172ad5c5ce8 100644 --- a/drivers/usb/serial/f81232.c +++ b/drivers/usb/serial/f81232.c | |||
| @@ -47,7 +47,6 @@ MODULE_DEVICE_TABLE(usb, id_table); | |||
| 47 | 47 | ||
| 48 | struct f81232_private { | 48 | struct f81232_private { |
| 49 | spinlock_t lock; | 49 | spinlock_t lock; |
| 50 | wait_queue_head_t delta_msr_wait; | ||
| 51 | u8 line_control; | 50 | u8 line_control; |
| 52 | u8 line_status; | 51 | u8 line_status; |
| 53 | }; | 52 | }; |
| @@ -111,7 +110,7 @@ static void f81232_process_read_urb(struct urb *urb) | |||
| 111 | line_status = priv->line_status; | 110 | line_status = priv->line_status; |
| 112 | priv->line_status &= ~UART_STATE_TRANSIENT_MASK; | 111 | priv->line_status &= ~UART_STATE_TRANSIENT_MASK; |
| 113 | spin_unlock_irqrestore(&priv->lock, flags); | 112 | spin_unlock_irqrestore(&priv->lock, flags); |
| 114 | wake_up_interruptible(&priv->delta_msr_wait); | 113 | wake_up_interruptible(&port->delta_msr_wait); |
| 115 | 114 | ||
| 116 | if (!urb->actual_length) | 115 | if (!urb->actual_length) |
| 117 | return; | 116 | return; |
| @@ -256,11 +255,14 @@ static int wait_modem_info(struct usb_serial_port *port, unsigned int arg) | |||
| 256 | spin_unlock_irqrestore(&priv->lock, flags); | 255 | spin_unlock_irqrestore(&priv->lock, flags); |
| 257 | 256 | ||
| 258 | while (1) { | 257 | while (1) { |
| 259 | interruptible_sleep_on(&priv->delta_msr_wait); | 258 | interruptible_sleep_on(&port->delta_msr_wait); |
| 260 | /* see if a signal did it */ | 259 | /* see if a signal did it */ |
| 261 | if (signal_pending(current)) | 260 | if (signal_pending(current)) |
| 262 | return -ERESTARTSYS; | 261 | return -ERESTARTSYS; |
| 263 | 262 | ||
| 263 | if (port->serial->disconnected) | ||
| 264 | return -EIO; | ||
| 265 | |||
| 264 | spin_lock_irqsave(&priv->lock, flags); | 266 | spin_lock_irqsave(&priv->lock, flags); |
| 265 | status = priv->line_status; | 267 | status = priv->line_status; |
| 266 | spin_unlock_irqrestore(&priv->lock, flags); | 268 | spin_unlock_irqrestore(&priv->lock, flags); |
| @@ -322,7 +324,6 @@ static int f81232_port_probe(struct usb_serial_port *port) | |||
| 322 | return -ENOMEM; | 324 | return -ENOMEM; |
| 323 | 325 | ||
| 324 | spin_lock_init(&priv->lock); | 326 | spin_lock_init(&priv->lock); |
| 325 | init_waitqueue_head(&priv->delta_msr_wait); | ||
| 326 | 327 | ||
| 327 | usb_set_serial_port_data(port, priv); | 328 | usb_set_serial_port_data(port, priv); |
| 328 | 329 | ||
