aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Hurley <peter@hurleysoftware.com>2013-03-05 01:09:05 -0500
committerDavid S. Miller <davem@davemloft.net>2013-03-06 02:47:04 -0500
commit2f7c069b96ed7b1f6236f2fa7b0bc06f4f54f2d9 (patch)
tree51aef4f367dfd5676e1eefaaf3f0ba6b8425e5d7
parenta4ed2e737cb73e4405a3649f8aef7619b99fecae (diff)
net/irda: Hold port lock while bumping blocked_open
Although tty_lock() already protects concurrent update to blocked_open, that fails to meet the separation-of-concerns between tty_port and tty. Signed-off-by: Peter Hurley <peter@hurleysoftware.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/irda/ircomm/ircomm_tty.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/net/irda/ircomm/ircomm_tty.c b/net/irda/ircomm/ircomm_tty.c
index 1721dc7e4315..d282bbea710e 100644
--- a/net/irda/ircomm/ircomm_tty.c
+++ b/net/irda/ircomm/ircomm_tty.c
@@ -317,8 +317,8 @@ static int ircomm_tty_block_til_ready(struct ircomm_tty_cb *self,
317 spin_lock_irqsave(&port->lock, flags); 317 spin_lock_irqsave(&port->lock, flags);
318 if (!tty_hung_up_p(filp)) 318 if (!tty_hung_up_p(filp))
319 port->count--; 319 port->count--;
320 spin_unlock_irqrestore(&port->lock, flags);
321 port->blocked_open++; 320 port->blocked_open++;
321 spin_unlock_irqrestore(&port->lock, flags);
322 322
323 while (1) { 323 while (1) {
324 if (tty->termios.c_cflag & CBAUD) 324 if (tty->termios.c_cflag & CBAUD)
@@ -362,8 +362,8 @@ static int ircomm_tty_block_til_ready(struct ircomm_tty_cb *self,
362 spin_lock_irqsave(&port->lock, flags); 362 spin_lock_irqsave(&port->lock, flags);
363 if (!tty_hung_up_p(filp)) 363 if (!tty_hung_up_p(filp))
364 port->count++; 364 port->count++;
365 spin_unlock_irqrestore(&port->lock, flags);
366 port->blocked_open--; 365 port->blocked_open--;
366 spin_unlock_irqrestore(&port->lock, flags);
367 367
368 IRDA_DEBUG(1, "%s(%d):block_til_ready after blocking on %s open_count=%d\n", 368 IRDA_DEBUG(1, "%s(%d):block_til_ready after blocking on %s open_count=%d\n",
369 __FILE__, __LINE__, tty->driver->name, port->count); 369 __FILE__, __LINE__, tty->driver->name, port->count);