From 5e4378cfab6666ec75234ee278691db79629bedc Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Wed, 20 Feb 2008 21:39:25 +0000 Subject: [PATCH] --- yaml --- r: 93299 b: refs/heads/master c: 7b1fc8bc6d6881ff7f8876cbe665b3ad5271bc03 h: refs/heads/master i: 93297: 3387a12739692e702a56ef9e6ae1ed4743136d02 93295: baf607d47ef71615015720c89dfefc0265a4c576 v: v3 --- [refs] | 2 +- trunk/drivers/usb/serial/iuu_phoenix.c | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 7d17a898111a..6902048a0e37 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e298449401463dd18f24a87c48f9b0ec62bad936 +refs/heads/master: 7b1fc8bc6d6881ff7f8876cbe665b3ad5271bc03 diff --git a/trunk/drivers/usb/serial/iuu_phoenix.c b/trunk/drivers/usb/serial/iuu_phoenix.c index fde188e23ce1..a09b9a85b16d 100644 --- a/trunk/drivers/usb/serial/iuu_phoenix.c +++ b/trunk/drivers/usb/serial/iuu_phoenix.c @@ -148,20 +148,21 @@ static int iuu_tiocmset(struct usb_serial_port *port, struct file *file, unsigned int set, unsigned int clear) { struct iuu_private *priv = usb_get_serial_port_data(port); - struct tty_struct *tty; - tty = port->tty; + unsigned long flags; + /* FIXME: locking on tiomstatus */ dbg("%s (%d) msg : SET = 0x%04x, CLEAR = 0x%04x ", __FUNCTION__, port->number, set, clear); + + spin_lock_irqsave(&priv->lock, flags); if (set & TIOCM_RTS) priv->tiostatus = TIOCM_RTS; if (!(set & TIOCM_RTS) && priv->tiostatus == TIOCM_RTS) { dbg("%s TIOCMSET RESET called !!!", __FUNCTION__); priv->reset = 1; - return 0; } - + spin_unlock_irqrestore(&priv->lock, flags); return 0; } @@ -173,7 +174,14 @@ static int iuu_tiocmset(struct usb_serial_port *port, struct file *file, static int iuu_tiocmget(struct usb_serial_port *port, struct file *file) { struct iuu_private *priv = usb_get_serial_port_data(port); - return priv->tiostatus; + unsigned long flags; + int rc; + + spin_lock_irqsave(&priv->lock, flags); + rc = priv->tiostatus; + spin_unlock_irqrestore(&priv->lock, flags); + + return rc; } static void iuu_rxcmd(struct urb *urb)