summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenry Gebhardt <gebhardt@astro.uni-tuebingen.de>2009-11-04 11:19:28 +0100
committerGreg Kroah-Hartman <gregkh@suse.de>2009-12-08 10:21:28 -0800
commitc859382e8e6c1347d0b34dc72b2c096b07113fd1 (patch)
tree6db249d57b6070025390ad46bb59b68573fbcd08
parent25838ae5be73ec1b27866b49961b50153bef9fd8 (diff)
USB: cdc_acm: Fix race condition when opening tty
commit 18a77b5d237a67d2c621a46f5271a3b51da1b380 upstream. If acm_rx_tasklet() gets called before tty_port_block_til_ready() returns, then bulk IN urbs may not be sent. This fixes it. Signed-off-by: Henry Gebhardt <gebhardt@astro.uni-tuebingen.de> Acked-by: Oliver Neukum <oliver@neukum.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/usb/class/cdc-acm.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
index e3861b21e776..b72fa49eb257 100644
--- a/drivers/usb/class/cdc-acm.c
+++ b/drivers/usb/class/cdc-acm.c
@@ -609,9 +609,9 @@ static int acm_tty_open(struct tty_struct *tty, struct file *filp)
acm->throttle = 0;
- tasklet_schedule(&acm->urb_task);
set_bit(ASYNCB_INITIALIZED, &acm->port.flags);
rv = tty_port_block_til_ready(&acm->port, tty, filp);
+ tasklet_schedule(&acm->urb_task);
done:
mutex_unlock(&acm->mutex);
err_out: