<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/drivers/tty, branch v3.13-rc8</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>tty: xuartps: Properly guard sysrq specific code</title>
<updated>2013-12-18T00:02:25+00:00</updated>
<author>
<name>Soren Brinkmann</name>
<email>soren.brinkmann@xilinx.com</email>
</author>
<published>2013-12-02T19:38:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=c2db11eca089b60148ded7467b956a547e8a2ae0'/>
<id>c2db11eca089b60148ded7467b956a547e8a2ae0</id>
<content type='text'>
Commit 'tty: xuartps: Implement BREAK detection, add SYSRQ support'
(0c0c47bc40a2e358d593b2d7fb93b50027fbfc0c) introduced sysrq support
without properly guarding sysrq specific code which results in build
errors when sysrq is disabled:
	DNAME=KBUILD_STR(xilinx_uartps)" -c -o
	drivers/tty/serial/.tmp_xilinx_uartps.o
	drivers/tty/serial/xilinx_uartps.c
	drivers/tty/serial/xilinx_uartps.c: In function 'xuartps_isr':
	drivers/tty/serial/xilinx_uartps.c:247:5: error: 'struct uart_port'
	has no member named 'sysrq'
	drivers/tty/serial/xilinx_uartps.c:247:5: error: 'struct uart_port'
	has no member named 'sysrq'
	drivers/tty/serial/xilinx_uartps.c:247:5: error: 'struct uart_port'
	has no member named 'sysrq'
	make[3]: *** [drivers/tty/serial/xilinx_uartps.o] Error 1

Reported-by: Masanari Iida &lt;standby24x7@gmail.com&gt;
Cc: Vlad Lungu &lt;vlad.lungu@windriver.com&gt;
Signed-off-by: Soren Brinkmann &lt;soren.brinkmann@xilinx.com&gt;
Signed-off-by: Mark Brown &lt;broonie@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Commit 'tty: xuartps: Implement BREAK detection, add SYSRQ support'
(0c0c47bc40a2e358d593b2d7fb93b50027fbfc0c) introduced sysrq support
without properly guarding sysrq specific code which results in build
errors when sysrq is disabled:
	DNAME=KBUILD_STR(xilinx_uartps)" -c -o
	drivers/tty/serial/.tmp_xilinx_uartps.o
	drivers/tty/serial/xilinx_uartps.c
	drivers/tty/serial/xilinx_uartps.c: In function 'xuartps_isr':
	drivers/tty/serial/xilinx_uartps.c:247:5: error: 'struct uart_port'
	has no member named 'sysrq'
	drivers/tty/serial/xilinx_uartps.c:247:5: error: 'struct uart_port'
	has no member named 'sysrq'
	drivers/tty/serial/xilinx_uartps.c:247:5: error: 'struct uart_port'
	has no member named 'sysrq'
	make[3]: *** [drivers/tty/serial/xilinx_uartps.o] Error 1

Reported-by: Masanari Iida &lt;standby24x7@gmail.com&gt;
Cc: Vlad Lungu &lt;vlad.lungu@windriver.com&gt;
Signed-off-by: Soren Brinkmann &lt;soren.brinkmann@xilinx.com&gt;
Signed-off-by: Mark Brown &lt;broonie@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>n_tty: Fix apparent order of echoed output</title>
<updated>2013-12-17T17:56:42+00:00</updated>
<author>
<name>Peter Hurley</name>
<email>peter@hurleysoftware.com</email>
</author>
<published>2013-12-09T23:06:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=1075a6e2dc7e2a96efc417b98dd98f57fdae985d'/>
<id>1075a6e2dc7e2a96efc417b98dd98f57fdae985d</id>
<content type='text'>
With block processing of echoed output, observed output order is still
required. Push completed echoes and echo commands prior to output.

Introduce echo_mark echo buffer index, which tracks completed echo
commands; ie., those submitted via commit_echoes but which may not
have been committed. Ensure that completed echoes are output prior
to subsequent terminal writes in process_echoes().

Fixes newline/prompt output order in cooked mode shell.

Cc: &lt;stable@vger.kernel.org&gt; # 3.12.x : 39434ab n_tty: Fix missing newline echo
Reported-by: Karl Dahlke &lt;eklhad@comcast.net&gt;
Reported-by: Mikulas Patocka &lt;mpatocka@redhat.com&gt;
Signed-off-by: Peter Hurley &lt;peter@hurleysoftware.com&gt;
Tested-by: Karl Dahlke &lt;eklhad@comcast.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
With block processing of echoed output, observed output order is still
required. Push completed echoes and echo commands prior to output.

Introduce echo_mark echo buffer index, which tracks completed echo
commands; ie., those submitted via commit_echoes but which may not
have been committed. Ensure that completed echoes are output prior
to subsequent terminal writes in process_echoes().

Fixes newline/prompt output order in cooked mode shell.

Cc: &lt;stable@vger.kernel.org&gt; # 3.12.x : 39434ab n_tty: Fix missing newline echo
Reported-by: Karl Dahlke &lt;eklhad@comcast.net&gt;
Reported-by: Mikulas Patocka &lt;mpatocka@redhat.com&gt;
Signed-off-by: Peter Hurley &lt;peter@hurleysoftware.com&gt;
Tested-by: Karl Dahlke &lt;eklhad@comcast.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>serial: 8250_dw: add new ACPI IDs</title>
<updated>2013-12-17T17:41:45+00:00</updated>
<author>
<name>Mika Westerberg</name>
<email>mika.westerberg@linux.intel.com</email>
</author>
<published>2013-12-10T10:56:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=d24c195f90cb1adb178d26d84c722d4b9e551e05'/>
<id>d24c195f90cb1adb178d26d84c722d4b9e551e05</id>
<content type='text'>
Newer Intel PCHs with LPSS have the same Designware controllers than
Haswell but ACPI IDs are different. Add these IDs to the driver list.

Signed-off-by: Mika Westerberg &lt;mika.westerberg@linux.intel.com&gt;
Cc: stable &lt;stable@vger.kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Newer Intel PCHs with LPSS have the same Designware controllers than
Haswell but ACPI IDs are different. Add these IDs to the driver list.

Signed-off-by: Mika Westerberg &lt;mika.westerberg@linux.intel.com&gt;
Cc: stable &lt;stable@vger.kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>serial: 8250_dw: Fix LCR workaround regression</title>
<updated>2013-12-17T01:10:46+00:00</updated>
<author>
<name>James Hogan</name>
<email>james.hogan@imgtec.com</email>
</author>
<published>2013-12-10T22:28:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=6979f8d28049879e6147767d93ba6732c8bd94f4'/>
<id>6979f8d28049879e6147767d93ba6732c8bd94f4</id>
<content type='text'>
Commit c49436b657d0 (serial: 8250_dw: Improve unwritable LCR workaround)
caused a regression. It added a check that the LCR was written properly
to detect and workaround the busy quirk, but the behaviour of bit 5
(UART_LCR_SPAR) differs between IP versions 3.00a and 3.14c per the
docs. On older versions this caused the check to fail and it would
repeatedly force idle and rewrite the LCR register, causing delays and
preventing any input from serial being received.

This is fixed by masking out UART_LCR_SPAR before making the comparison.

Signed-off-by: James Hogan &lt;james.hogan@imgtec.com&gt;
Cc: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Cc: Jiri Slaby &lt;jslaby@suse.cz&gt;
Cc: Tim Kryger &lt;tim.kryger@linaro.org&gt;
Cc: Ezequiel Garcia &lt;ezequiel.garcia@free-electrons.com&gt;
Cc: Matt Porter &lt;matt.porter@linaro.org&gt;
Cc: Markus Mayer &lt;markus.mayer@linaro.org&gt;
Tested-by: Tim Kryger &lt;tim.kryger@linaro.org&gt;
Tested-by: Ezequiel Garcia &lt;ezequiel.garcia@free-electrons.com&gt;
Tested-by: Heikki Krogerus &lt;heikki.krogerus@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Commit c49436b657d0 (serial: 8250_dw: Improve unwritable LCR workaround)
caused a regression. It added a check that the LCR was written properly
to detect and workaround the busy quirk, but the behaviour of bit 5
(UART_LCR_SPAR) differs between IP versions 3.00a and 3.14c per the
docs. On older versions this caused the check to fail and it would
repeatedly force idle and rewrite the LCR register, causing delays and
preventing any input from serial being received.

This is fixed by masking out UART_LCR_SPAR before making the comparison.

Signed-off-by: James Hogan &lt;james.hogan@imgtec.com&gt;
Cc: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Cc: Jiri Slaby &lt;jslaby@suse.cz&gt;
Cc: Tim Kryger &lt;tim.kryger@linaro.org&gt;
Cc: Ezequiel Garcia &lt;ezequiel.garcia@free-electrons.com&gt;
Cc: Matt Porter &lt;matt.porter@linaro.org&gt;
Cc: Markus Mayer &lt;markus.mayer@linaro.org&gt;
Tested-by: Tim Kryger &lt;tim.kryger@linaro.org&gt;
Tested-by: Ezequiel Garcia &lt;ezequiel.garcia@free-electrons.com&gt;
Tested-by: Heikki Krogerus &lt;heikki.krogerus@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tty: Fix hang at ldsem_down_read()</title>
<updated>2013-12-17T00:55:43+00:00</updated>
<author>
<name>Peter Hurley</name>
<email>peter@hurleysoftware.com</email>
</author>
<published>2013-12-12T02:11:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=cf872776fc84128bb779ce2b83a37c884c3203ae'/>
<id>cf872776fc84128bb779ce2b83a37c884c3203ae</id>
<content type='text'>
When a controlling tty is being hung up and the hang up is
waiting for a just-signalled tty reader or writer to exit, and a new tty
reader/writer tries to acquire an ldisc reference concurrently with the
ldisc reference release from the signalled reader/writer, the hangup
can hang. The new reader/writer is sleeping in ldsem_down_read() and the
hangup is sleeping in ldsem_down_write() [1].

The new reader/writer fails to wakeup the waiting hangup because the
wrong lock count value is checked (the old lock count rather than the new
lock count) to see if the lock is unowned.

Change helper function to return the new lock count if the cmpxchg was
successful; document this behavior.

[1] edited dmesg log from reporter

SysRq : Show Blocked State
  task                        PC stack   pid father
systemd         D ffff88040c4f0000     0     1      0 0x00000000
 ffff88040c49fbe0 0000000000000046 ffff88040c4a0000 ffff88040c49ffd8
 00000000001d3980 00000000001d3980 ffff88040c4a0000 ffff88040593d840
 ffff88040c49fb40 ffffffff810a4cc0 0000000000000006 0000000000000023
Call Trace:
 [&lt;ffffffff810a4cc0&gt;] ? sched_clock_cpu+0x9f/0xe4
 [&lt;ffffffff810a4cc0&gt;] ? sched_clock_cpu+0x9f/0xe4
 [&lt;ffffffff810a4cc0&gt;] ? sched_clock_cpu+0x9f/0xe4
 [&lt;ffffffff810a4cc0&gt;] ? sched_clock_cpu+0x9f/0xe4
 [&lt;ffffffff817a6649&gt;] schedule+0x24/0x5e
 [&lt;ffffffff817a588b&gt;] schedule_timeout+0x15b/0x1ec
 [&lt;ffffffff810a4cc0&gt;] ? sched_clock_cpu+0x9f/0xe4
 [&lt;ffffffff817aa691&gt;] ? _raw_spin_unlock_irq+0x24/0x26
 [&lt;ffffffff817aa10c&gt;] down_read_failed+0xe3/0x1b9
 [&lt;ffffffff817aa26d&gt;] ldsem_down_read+0x8b/0xa5
 [&lt;ffffffff8142b5ca&gt;] ? tty_ldisc_ref_wait+0x1b/0x44
 [&lt;ffffffff8142b5ca&gt;] tty_ldisc_ref_wait+0x1b/0x44
 [&lt;ffffffff81423f5b&gt;] tty_write+0x7d/0x28a
 [&lt;ffffffff814241f5&gt;] redirected_tty_write+0x8d/0x98
 [&lt;ffffffff81424168&gt;] ? tty_write+0x28a/0x28a
 [&lt;ffffffff8115d03f&gt;] do_loop_readv_writev+0x56/0x79
 [&lt;ffffffff8115e604&gt;] do_readv_writev+0x1b0/0x1ff
 [&lt;ffffffff8116ea0b&gt;] ? do_vfs_ioctl+0x32a/0x489
 [&lt;ffffffff81167d9d&gt;] ? final_putname+0x1d/0x3a
 [&lt;ffffffff8115e6c7&gt;] vfs_writev+0x2e/0x49
 [&lt;ffffffff8115e7d3&gt;] SyS_writev+0x47/0xaa
 [&lt;ffffffff817ab822&gt;] system_call_fastpath+0x16/0x1b
bash            D ffffffff81c104c0     0  5469   5302 0x00000082
 ffff8800cf817ac0 0000000000000046 ffff8804086b22a0 ffff8800cf817fd8
 00000000001d3980 00000000001d3980 ffff8804086b22a0 ffff8800cf817a48
 000000000000b9a0 ffff8800cf817a78 ffffffff81004675 ffff8800cf817a44
Call Trace:
 [&lt;ffffffff81004675&gt;] ? dump_trace+0x165/0x29c
 [&lt;ffffffff810a4cc0&gt;] ? sched_clock_cpu+0x9f/0xe4
 [&lt;ffffffff8100edda&gt;] ? save_stack_trace+0x26/0x41
 [&lt;ffffffff817a6649&gt;] schedule+0x24/0x5e
 [&lt;ffffffff817a588b&gt;] schedule_timeout+0x15b/0x1ec
 [&lt;ffffffff810a4cc0&gt;] ? sched_clock_cpu+0x9f/0xe4
 [&lt;ffffffff817a9f03&gt;] ? down_write_failed+0xa3/0x1c9
 [&lt;ffffffff817aa691&gt;] ? _raw_spin_unlock_irq+0x24/0x26
 [&lt;ffffffff817a9f0b&gt;] down_write_failed+0xab/0x1c9
 [&lt;ffffffff817aa300&gt;] ldsem_down_write+0x79/0xb1
 [&lt;ffffffff817aada3&gt;] ? tty_ldisc_lock_pair_timeout+0xa5/0xd9
 [&lt;ffffffff817aada3&gt;] tty_ldisc_lock_pair_timeout+0xa5/0xd9
 [&lt;ffffffff8142bf33&gt;] tty_ldisc_hangup+0xc4/0x218
 [&lt;ffffffff81423ab3&gt;] __tty_hangup+0x2e2/0x3ed
 [&lt;ffffffff81424a76&gt;] disassociate_ctty+0x63/0x226
 [&lt;ffffffff81078aa7&gt;] do_exit+0x79f/0xa11
 [&lt;ffffffff81086bdb&gt;] ? get_signal_to_deliver+0x206/0x62f
 [&lt;ffffffff810b4bfb&gt;] ? lock_release_holdtime.part.8+0xf/0x16e
 [&lt;ffffffff81079b05&gt;] do_group_exit+0x47/0xb5
 [&lt;ffffffff81086c16&gt;] get_signal_to_deliver+0x241/0x62f
 [&lt;ffffffff810020a7&gt;] do_signal+0x43/0x59d
 [&lt;ffffffff810f2af7&gt;] ? __audit_syscall_exit+0x21a/0x2a8
 [&lt;ffffffff810b4bfb&gt;] ? lock_release_holdtime.part.8+0xf/0x16e
 [&lt;ffffffff81002655&gt;] do_notify_resume+0x54/0x6c
 [&lt;ffffffff817abaf8&gt;] int_signal+0x12/0x17

Reported-by: Sami Farin &lt;sami.farin@gmail.com&gt;
Cc: &lt;stable@vger.kernel.org&gt; # 3.12.x
Signed-off-by: Peter Hurley &lt;peter@hurleysoftware.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When a controlling tty is being hung up and the hang up is
waiting for a just-signalled tty reader or writer to exit, and a new tty
reader/writer tries to acquire an ldisc reference concurrently with the
ldisc reference release from the signalled reader/writer, the hangup
can hang. The new reader/writer is sleeping in ldsem_down_read() and the
hangup is sleeping in ldsem_down_write() [1].

The new reader/writer fails to wakeup the waiting hangup because the
wrong lock count value is checked (the old lock count rather than the new
lock count) to see if the lock is unowned.

Change helper function to return the new lock count if the cmpxchg was
successful; document this behavior.

[1] edited dmesg log from reporter

SysRq : Show Blocked State
  task                        PC stack   pid father
systemd         D ffff88040c4f0000     0     1      0 0x00000000
 ffff88040c49fbe0 0000000000000046 ffff88040c4a0000 ffff88040c49ffd8
 00000000001d3980 00000000001d3980 ffff88040c4a0000 ffff88040593d840
 ffff88040c49fb40 ffffffff810a4cc0 0000000000000006 0000000000000023
Call Trace:
 [&lt;ffffffff810a4cc0&gt;] ? sched_clock_cpu+0x9f/0xe4
 [&lt;ffffffff810a4cc0&gt;] ? sched_clock_cpu+0x9f/0xe4
 [&lt;ffffffff810a4cc0&gt;] ? sched_clock_cpu+0x9f/0xe4
 [&lt;ffffffff810a4cc0&gt;] ? sched_clock_cpu+0x9f/0xe4
 [&lt;ffffffff817a6649&gt;] schedule+0x24/0x5e
 [&lt;ffffffff817a588b&gt;] schedule_timeout+0x15b/0x1ec
 [&lt;ffffffff810a4cc0&gt;] ? sched_clock_cpu+0x9f/0xe4
 [&lt;ffffffff817aa691&gt;] ? _raw_spin_unlock_irq+0x24/0x26
 [&lt;ffffffff817aa10c&gt;] down_read_failed+0xe3/0x1b9
 [&lt;ffffffff817aa26d&gt;] ldsem_down_read+0x8b/0xa5
 [&lt;ffffffff8142b5ca&gt;] ? tty_ldisc_ref_wait+0x1b/0x44
 [&lt;ffffffff8142b5ca&gt;] tty_ldisc_ref_wait+0x1b/0x44
 [&lt;ffffffff81423f5b&gt;] tty_write+0x7d/0x28a
 [&lt;ffffffff814241f5&gt;] redirected_tty_write+0x8d/0x98
 [&lt;ffffffff81424168&gt;] ? tty_write+0x28a/0x28a
 [&lt;ffffffff8115d03f&gt;] do_loop_readv_writev+0x56/0x79
 [&lt;ffffffff8115e604&gt;] do_readv_writev+0x1b0/0x1ff
 [&lt;ffffffff8116ea0b&gt;] ? do_vfs_ioctl+0x32a/0x489
 [&lt;ffffffff81167d9d&gt;] ? final_putname+0x1d/0x3a
 [&lt;ffffffff8115e6c7&gt;] vfs_writev+0x2e/0x49
 [&lt;ffffffff8115e7d3&gt;] SyS_writev+0x47/0xaa
 [&lt;ffffffff817ab822&gt;] system_call_fastpath+0x16/0x1b
bash            D ffffffff81c104c0     0  5469   5302 0x00000082
 ffff8800cf817ac0 0000000000000046 ffff8804086b22a0 ffff8800cf817fd8
 00000000001d3980 00000000001d3980 ffff8804086b22a0 ffff8800cf817a48
 000000000000b9a0 ffff8800cf817a78 ffffffff81004675 ffff8800cf817a44
Call Trace:
 [&lt;ffffffff81004675&gt;] ? dump_trace+0x165/0x29c
 [&lt;ffffffff810a4cc0&gt;] ? sched_clock_cpu+0x9f/0xe4
 [&lt;ffffffff8100edda&gt;] ? save_stack_trace+0x26/0x41
 [&lt;ffffffff817a6649&gt;] schedule+0x24/0x5e
 [&lt;ffffffff817a588b&gt;] schedule_timeout+0x15b/0x1ec
 [&lt;ffffffff810a4cc0&gt;] ? sched_clock_cpu+0x9f/0xe4
 [&lt;ffffffff817a9f03&gt;] ? down_write_failed+0xa3/0x1c9
 [&lt;ffffffff817aa691&gt;] ? _raw_spin_unlock_irq+0x24/0x26
 [&lt;ffffffff817a9f0b&gt;] down_write_failed+0xab/0x1c9
 [&lt;ffffffff817aa300&gt;] ldsem_down_write+0x79/0xb1
 [&lt;ffffffff817aada3&gt;] ? tty_ldisc_lock_pair_timeout+0xa5/0xd9
 [&lt;ffffffff817aada3&gt;] tty_ldisc_lock_pair_timeout+0xa5/0xd9
 [&lt;ffffffff8142bf33&gt;] tty_ldisc_hangup+0xc4/0x218
 [&lt;ffffffff81423ab3&gt;] __tty_hangup+0x2e2/0x3ed
 [&lt;ffffffff81424a76&gt;] disassociate_ctty+0x63/0x226
 [&lt;ffffffff81078aa7&gt;] do_exit+0x79f/0xa11
 [&lt;ffffffff81086bdb&gt;] ? get_signal_to_deliver+0x206/0x62f
 [&lt;ffffffff810b4bfb&gt;] ? lock_release_holdtime.part.8+0xf/0x16e
 [&lt;ffffffff81079b05&gt;] do_group_exit+0x47/0xb5
 [&lt;ffffffff81086c16&gt;] get_signal_to_deliver+0x241/0x62f
 [&lt;ffffffff810020a7&gt;] do_signal+0x43/0x59d
 [&lt;ffffffff810f2af7&gt;] ? __audit_syscall_exit+0x21a/0x2a8
 [&lt;ffffffff810b4bfb&gt;] ? lock_release_holdtime.part.8+0xf/0x16e
 [&lt;ffffffff81002655&gt;] do_notify_resume+0x54/0x6c
 [&lt;ffffffff817abaf8&gt;] int_signal+0x12/0x17

Reported-by: Sami Farin &lt;sami.farin@gmail.com&gt;
Cc: &lt;stable@vger.kernel.org&gt; # 3.12.x
Signed-off-by: Peter Hurley &lt;peter@hurleysoftware.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>n_tty: Fix missing newline echo</title>
<updated>2013-11-29T20:53:19+00:00</updated>
<author>
<name>Peter Hurley</name>
<email>peter@hurleysoftware.com</email>
</author>
<published>2013-11-29T17:56:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=39434abd942c8e4b9c14c06a03b3245beaf8467f'/>
<id>39434abd942c8e4b9c14c06a03b3245beaf8467f</id>
<content type='text'>
When L_ECHONL is on, newlines are echoed regardless of the L_ECHO
state; if set, ensure accumulated echoes are flushed before finishing
the current input processing and before more output.

Cc: &lt;stable@vger.kernel.org&gt; # 3.12.x
Reported-by: Jason Gunthorpe &lt;jgunthorpe@obsidianresearch.com
Tested-by: Jason Gunthorpe &lt;jgunthorpe@obsidianresearch.com&gt;
Signed-off-by: Peter Hurley &lt;peter@hurleysoftware.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When L_ECHONL is on, newlines are echoed regardless of the L_ECHO
state; if set, ensure accumulated echoes are flushed before finishing
the current input processing and before more output.

Cc: &lt;stable@vger.kernel.org&gt; # 3.12.x
Reported-by: Jason Gunthorpe &lt;jgunthorpe@obsidianresearch.com
Tested-by: Jason Gunthorpe &lt;jgunthorpe@obsidianresearch.com&gt;
Signed-off-by: Peter Hurley &lt;peter@hurleysoftware.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "n_gsm: race between ld close and gsmtty open"</title>
<updated>2013-11-26T02:30:21+00:00</updated>
<author>
<name>Greg Kroah-Hartman</name>
<email>gregkh@linuxfoundation.org</email>
</author>
<published>2013-11-26T02:30:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=c42b4e6501cdaabee8cc292ae1ef0f66bf4825c1'/>
<id>c42b4e6501cdaabee8cc292ae1ef0f66bf4825c1</id>
<content type='text'>
This reverts commit c284ee2cf12b55fa8496b2d098bf0938688f1c1c.  Turns out
the locking was incorrect.

Reported-by: Fengguang Wu &lt;fengguang.wu@intel.com&gt;
Cc: Chao Bi &lt;chao.bi@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit c284ee2cf12b55fa8496b2d098bf0938688f1c1c.  Turns out
the locking was incorrect.

Reported-by: Fengguang Wu &lt;fengguang.wu@intel.com&gt;
Cc: Chao Bi &lt;chao.bi@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>n_tty: Protect minimum_to_wake reset for concurrent readers</title>
<updated>2013-11-25T17:17:49+00:00</updated>
<author>
<name>Peter Hurley</name>
<email>peter@hurleysoftware.com</email>
</author>
<published>2013-11-07T19:01:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=aebf045382edb32bd763d8edea02a559e7dc41e9'/>
<id>aebf045382edb32bd763d8edea02a559e7dc41e9</id>
<content type='text'>
With multiple, concurrent readers (each waiting to acquire the
atomic_read_lock mutex), a departing reader may mistakenly reset
minimum_to_wake after a new reader has already set a new value.

Protect the minimum_to_wake reset with the atomic_read_lock critical
section.

Signed-off-by: Peter Hurley &lt;peter@hurleysoftware.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
With multiple, concurrent readers (each waiting to acquire the
atomic_read_lock mutex), a departing reader may mistakenly reset
minimum_to_wake after a new reader has already set a new value.

Protect the minimum_to_wake reset with the atomic_read_lock critical
section.

Signed-off-by: Peter Hurley &lt;peter@hurleysoftware.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tty: Reset hupped state on open</title>
<updated>2013-11-25T16:56:49+00:00</updated>
<author>
<name>Peter Hurley</name>
<email>peter@hurleysoftware.com</email>
</author>
<published>2013-11-19T13:46:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=d4855e1fc03c2bb32dd64badf51cec5a2a26ab2a'/>
<id>d4855e1fc03c2bb32dd64badf51cec5a2a26ab2a</id>
<content type='text'>
A common security idiom is to hangup the current tty (via vhangup())
after forking but before execing a root shell. This hangs up any
existing opens which other processes may have and ensures subsequent
opens have the necessary permissions to open the root shell tty/pty.

Reset the TTY_HUPPED state after the driver has successfully
returned the opened tty (perform the reset while the tty is locked
to avoid racing with concurrent hangups).

Reported-by: Heorhi Valakhanovich &lt;valahanovich@tut.by&gt;
Signed-off-by: Peter Hurley &lt;peter@hurleysoftware.com&gt;
Cc: stable &lt;stable@vger.kernel.org&gt; # 3.12
Tested-by: Heorhi Valakhanovich &lt;valahanovich@tut.by&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A common security idiom is to hangup the current tty (via vhangup())
after forking but before execing a root shell. This hangs up any
existing opens which other processes may have and ensures subsequent
opens have the necessary permissions to open the root shell tty/pty.

Reset the TTY_HUPPED state after the driver has successfully
returned the opened tty (perform the reset while the tty is locked
to avoid racing with concurrent hangups).

Reported-by: Heorhi Valakhanovich &lt;valahanovich@tut.by&gt;
Signed-off-by: Peter Hurley &lt;peter@hurleysoftware.com&gt;
Cc: stable &lt;stable@vger.kernel.org&gt; # 3.12
Tested-by: Heorhi Valakhanovich &lt;valahanovich@tut.by&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>TTY: amiserial, add missing platform check</title>
<updated>2013-11-25T16:54:25+00:00</updated>
<author>
<name>Geert Uytterhoeven</name>
<email>geert@linux-m68k.org</email>
</author>
<published>2013-11-22T15:47:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=3dcf344bef2e9b9910817b210783d79c383bc849'/>
<id>3dcf344bef2e9b9910817b210783d79c383bc849</id>
<content type='text'>
When booting a multi-platform m68k kernel on a non-Amiga with
"console=ttyS0" on the kernel command line, it crashes with:

Unable to handle kernel access at virtual address 81dff01c
Oops: 00000000
PC: [&lt;001e09a8&gt;] serial_console_write+0xc/0x70

Add the missing platform check to amiserial_console_init() to fix this.

Signed-off-by: Geert Uytterhoeven &lt;geert@linux-m68k.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When booting a multi-platform m68k kernel on a non-Amiga with
"console=ttyS0" on the kernel command line, it crashes with:

Unable to handle kernel access at virtual address 81dff01c
Oops: 00000000
PC: [&lt;001e09a8&gt;] serial_console_write+0xc/0x70

Add the missing platform check to amiserial_console_init() to fix this.

Signed-off-by: Geert Uytterhoeven &lt;geert@linux-m68k.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
