diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-04-29 12:16:17 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-04-29 12:16:17 -0700 | 
| commit | 507ffe4f3840ac24890a8123c702cf1b7fe4d33c (patch) | |
| tree | 1046888f9db00f268a0056d7f6e427e21502f84c /drivers/tty/tty_buffer.c | |
| parent | fdc719b63ae35d6a2d8a2a2c76eed813294664bf (diff) | |
| parent | 45efcb2d32d35f6509543e477568842d8467035d (diff) | |
Merge tag 'tty-3.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
Pull tty/serial driver update from Greg Kroah-Hartman:
 "Here's the big tty/serial driver merge request for 3.10-rc1
  Once again, Jiri has a number of TTY driver fixes and cleanups, and
  Peter Hurley came through with a bunch of ldisc fixes that resolve a
  number of reported issues.  There are some other serial driver
  cleanups as well.
  All of these have been in the linux-next tree for a while"
* tag 'tty-3.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (117 commits)
  tty/serial/sirf: fix MODULE_DEVICE_TABLE
  serial: mxs: drop superfluous {get|put}_device
  serial: mxs: fix buffer overflow
  ARM: PL011: add support for extended FIFO-size of PL011-r1p5
  serial_core.c: add put_device() after device_find_child()
  tty: Fix unsafe bit ops in tty_throttle_safe/unthrottle_safe
  serial: sccnxp: Replace pdata.init/exit with regulator API
  serial: sccnxp: Do not override device name
  TTY: pty, fix compilation warning
  TTY: rocket, fix compilation warning
  TTY: ircomm: fix DTR being raised on hang up
  TTY: synclinkmp: fix DTR being raised on hang up
  TTY: synclink_gt: fix DTR being raised on hang up
  TTY: synclink: fix DTR being raised on hang up
  serial: 8250_dw: Fix the stub for dw8250_probe_acpi()
  serial: 8250_dw: Convert to devm_ioremap()
  serial: 8250_dw: Set port capabilities based on CPR register
  serial: 8250_dw: Let ACPI code extract the DMA client info
  serial: 8250_dw: Support clk framework also with ACPI
  serial: 8250_dw: Enable runtime PM
  ...
Diffstat (limited to 'drivers/tty/tty_buffer.c')
| -rw-r--r-- | drivers/tty/tty_buffer.c | 22 | 
1 files changed, 10 insertions, 12 deletions
diff --git a/drivers/tty/tty_buffer.c b/drivers/tty/tty_buffer.c index 578aa7594b11..9121c1f7aeef 100644 --- a/drivers/tty/tty_buffer.c +++ b/drivers/tty/tty_buffer.c @@ -449,11 +449,6 @@ static void flush_to_ldisc(struct work_struct *work)  				tty_buffer_free(port, head);  				continue;  			} -			/* Ldisc or user is trying to flush the buffers -			   we are feeding to the ldisc, stop feeding the -			   line discipline as we want to empty the queue */ -			if (test_bit(TTYP_FLUSHPENDING, &port->iflags)) -				break;  			if (!tty->receive_room)  				break;  			if (count > tty->receive_room) @@ -465,17 +460,20 @@ static void flush_to_ldisc(struct work_struct *work)  			disc->ops->receive_buf(tty, char_buf,  							flag_buf, count);  			spin_lock_irqsave(&buf->lock, flags); +			/* Ldisc or user is trying to flush the buffers. +			   We may have a deferred request to flush the +			   input buffer, if so pull the chain under the lock +			   and empty the queue */ +			if (test_bit(TTYP_FLUSHPENDING, &port->iflags)) { +				__tty_buffer_flush(port); +				clear_bit(TTYP_FLUSHPENDING, &port->iflags); +				wake_up(&tty->read_wait); +				break; +			}  		}  		clear_bit(TTYP_FLUSHING, &port->iflags);  	} -	/* We may have a deferred request to flush the input buffer, -	   if so pull the chain under the lock and empty the queue */ -	if (test_bit(TTYP_FLUSHPENDING, &port->iflags)) { -		__tty_buffer_flush(port); -		clear_bit(TTYP_FLUSHPENDING, &port->iflags); -		wake_up(&tty->read_wait); -	}  	spin_unlock_irqrestore(&buf->lock, flags);  	tty_ldisc_deref(disc);  | 
