diff options
author | Arnd Bergmann <arnd@arndb.de> | 2010-06-01 16:53:04 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-08-10 16:47:43 -0400 |
commit | 4e608671674b62e97166f903830d5553e37970e8 (patch) | |
tree | cd7c1a0005084e72f78d47e387262d5f6cd484a0 /drivers/usb/class/cdc-acm.c | |
parent | 83ceb67d7dfe6aedf0e47dd6887b7b3c753542b2 (diff) |
cdc-acm: remove dead code
The wait_event_interruptible_timeout in acm_port_down is
never reached. Remove it to avoid possible deadlocks
with the big tty mutex if someone were to start using
the blocking version of acm_port_down.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/class/cdc-acm.c')
-rw-r--r-- | drivers/usb/class/cdc-acm.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c index 89d260d6b031..1833b3a71515 100644 --- a/drivers/usb/class/cdc-acm.c +++ b/drivers/usb/class/cdc-acm.c | |||
@@ -636,19 +636,13 @@ static void acm_tty_unregister(struct acm *acm) | |||
636 | 636 | ||
637 | static int acm_tty_chars_in_buffer(struct tty_struct *tty); | 637 | static int acm_tty_chars_in_buffer(struct tty_struct *tty); |
638 | 638 | ||
639 | static void acm_port_down(struct acm *acm, int drain) | 639 | static void acm_port_down(struct acm *acm) |
640 | { | 640 | { |
641 | int i, nr = acm->rx_buflimit; | 641 | int i, nr = acm->rx_buflimit; |
642 | mutex_lock(&open_mutex); | 642 | mutex_lock(&open_mutex); |
643 | if (acm->dev) { | 643 | if (acm->dev) { |
644 | usb_autopm_get_interface(acm->control); | 644 | usb_autopm_get_interface(acm->control); |
645 | acm_set_control(acm, acm->ctrlout = 0); | 645 | acm_set_control(acm, acm->ctrlout = 0); |
646 | /* try letting the last writes drain naturally */ | ||
647 | if (drain) { | ||
648 | wait_event_interruptible_timeout(acm->drain_wait, | ||
649 | (ACM_NW == acm_wb_is_avail(acm)) || !acm->dev, | ||
650 | ACM_CLOSE_TIMEOUT * HZ); | ||
651 | } | ||
652 | usb_kill_urb(acm->ctrlurb); | 646 | usb_kill_urb(acm->ctrlurb); |
653 | for (i = 0; i < ACM_NW; i++) | 647 | for (i = 0; i < ACM_NW; i++) |
654 | usb_kill_urb(acm->wb[i].urb); | 648 | usb_kill_urb(acm->wb[i].urb); |
@@ -664,7 +658,7 @@ static void acm_tty_hangup(struct tty_struct *tty) | |||
664 | { | 658 | { |
665 | struct acm *acm = tty->driver_data; | 659 | struct acm *acm = tty->driver_data; |
666 | tty_port_hangup(&acm->port); | 660 | tty_port_hangup(&acm->port); |
667 | acm_port_down(acm, 0); | 661 | acm_port_down(acm); |
668 | } | 662 | } |
669 | 663 | ||
670 | static void acm_tty_close(struct tty_struct *tty, struct file *filp) | 664 | static void acm_tty_close(struct tty_struct *tty, struct file *filp) |
@@ -685,7 +679,7 @@ static void acm_tty_close(struct tty_struct *tty, struct file *filp) | |||
685 | mutex_unlock(&open_mutex); | 679 | mutex_unlock(&open_mutex); |
686 | return; | 680 | return; |
687 | } | 681 | } |
688 | acm_port_down(acm, 0); | 682 | acm_port_down(acm); |
689 | tty_port_close_end(&acm->port, tty); | 683 | tty_port_close_end(&acm->port, tty); |
690 | tty_port_tty_set(&acm->port, NULL); | 684 | tty_port_tty_set(&acm->port, NULL); |
691 | } | 685 | } |