<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/drivers/tty, branch v3.10-rc5</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>Revert "serial: 8250: Make SERIAL_8250_RUNTIME_UARTS work correctly"</title>
<updated>2013-06-03T17:08:28+00:00</updated>
<author>
<name>Kyle McMartin</name>
<email>kyle@infradead.org</email>
</author>
<published>2013-06-03T13:38:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=317a68427d4b0a302ecff252fd83a00557947db8'/>
<id>317a68427d4b0a302ecff252fd83a00557947db8</id>
<content type='text'>
This reverts commit cfcec52e9781f08948c6eb98198d65c45be75a70.

This regresses a longstanding behaviour on X86 systems, which end up with
PCI serial ports moving between ttyS4 and ttyS0 when you bisect to opposite
sides of this commit, resulting in the need to constantly modify the console
setting in order to bisect across it.

Please revert, we can work on solving this for ARM platforms in a less
disruptive way.

Signed-off-by: Kyle McMartin &lt;kyle@mcmartin.ca&gt;
Cc: Karthik Manamcheri &lt;karthik.manamcheri@gmail.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 cfcec52e9781f08948c6eb98198d65c45be75a70.

This regresses a longstanding behaviour on X86 systems, which end up with
PCI serial ports moving between ttyS4 and ttyS0 when you bisect to opposite
sides of this commit, resulting in the need to constantly modify the console
setting in order to bisect across it.

Please revert, we can work on solving this for ARM platforms in a less
disruptive way.

Signed-off-by: Kyle McMartin &lt;kyle@mcmartin.ca&gt;
Cc: Karthik Manamcheri &lt;karthik.manamcheri@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>serial: samsung: enable clock before clearing pending interrupts during init</title>
<updated>2013-06-03T17:08:28+00:00</updated>
<author>
<name>Chander Kashyap</name>
<email>chander.kashyap@linaro.org</email>
</author>
<published>2013-05-28T13:02:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=60e93575476f90a72146b51283f514da655410a7'/>
<id>60e93575476f90a72146b51283f514da655410a7</id>
<content type='text'>
Ensure that the uart controller clock is enabled prior to writing to the
interrupt mask and pending registers in the s3c24xx_serial_init_port
function.

Signed-off-by: Chander Kashyap &lt;chander.kashyap@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>
Ensure that the uart controller clock is enabled prior to writing to the
interrupt mask and pending registers in the s3c24xx_serial_init_port
function.

Signed-off-by: Chander Kashyap &lt;chander.kashyap@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>serial/imx: disable hardware flow control at startup</title>
<updated>2013-06-03T17:08:28+00:00</updated>
<author>
<name>Lucas Stach</name>
<email>l.stach@pengutronix.de</email>
</author>
<published>2013-05-30T13:47:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=bff09b099b31a31573b3c5943f805f6a08c714f0'/>
<id>bff09b099b31a31573b3c5943f805f6a08c714f0</id>
<content type='text'>
We only want to enable hardware flow control if RTS/CTS pins
are connected.

Signed-off-by: Lucas Stach &lt;l.stach@pengutronix.de&gt;
Signed-off-by: Markus Pargmann &lt;mpa@pengutronix.de&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>
We only want to enable hardware flow control if RTS/CTS pins
are connected.

Signed-off-by: Lucas Stach &lt;l.stach@pengutronix.de&gt;
Signed-off-by: Markus Pargmann &lt;mpa@pengutronix.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc</title>
<updated>2013-05-24T23:27:37+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2013-05-24T23:27:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=00cec111ac477ba71c99043358f17e9bb4d335fe'/>
<id>00cec111ac477ba71c99043358f17e9bb4d335fe</id>
<content type='text'>
Pull ARM SoC fixes from Olof Johansson:
 "We didn't have any fixes sent up for -rc2, so this is a slightly
  larger batch.  A bit all over the place platform-wise; OMAP, at91,
  marvell, renesas, sunxi, ux500, etc.

  I tried to summarize highlights but there isn't a whole lot to point
  out.  Lots of little things fixed all over.  A couple of defconfig
  updates due to new/changing options."

* tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (44 commits)
  ARM: at91/sama5: fix incorrect PMC pcr div definition
  ARM: at91/dt: fix macb pinctrl_macb_rmii_mii_alt definition
  ARM: at91: at91sam9n12: move external irq declatation to DT
  ARM: shmobile: marzen: Use error values in usb_power_*
  ARM: tegra: defconfig fixes
  ARM: nomadik: fix IRQ assignment for SMC ethernet
  ARM: vt8500: Add missing NULL terminator in dt_compat
  clk: tegra: add ac97 controller clock
  clk: tegra: remove USB from clk init table
  ARM: dts: mvebu: Fix wrong the address reg value for the L2-cache node
  ARM: plat-orion: Fix num_resources and id for ge10 and ge11
  ARM: OMAP2+: hwmod: Remove sysc slave idle and auto idle apis
  SERIAL: OMAP: Remove the slave idle handling from the driver
  ARM: OMAP2+: serial: Remove the un-used slave idle hooks
  ARM: OMAP2+: hwmod-data: UART IP needs software control to manage sidle modes
  ARM: OMAP2+: hwmod: Add a new flag to handle SIDLE in SWSUP only in active
  ARM: OMAP2+: hwmod: Fix sidle programming in _enable_sysc()/_idle_sysc()
  arm: mvebu: fix the 'ranges' property to handle PCIe
  ARM: mvebu: select ARCH_REQUIRE_GPIOLIB for mvebu platform
  ARM: AM33XX: Add missing .clkdm_name to clkdiv32k_ick clock
  ...
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull ARM SoC fixes from Olof Johansson:
 "We didn't have any fixes sent up for -rc2, so this is a slightly
  larger batch.  A bit all over the place platform-wise; OMAP, at91,
  marvell, renesas, sunxi, ux500, etc.

  I tried to summarize highlights but there isn't a whole lot to point
  out.  Lots of little things fixed all over.  A couple of defconfig
  updates due to new/changing options."

* tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (44 commits)
  ARM: at91/sama5: fix incorrect PMC pcr div definition
  ARM: at91/dt: fix macb pinctrl_macb_rmii_mii_alt definition
  ARM: at91: at91sam9n12: move external irq declatation to DT
  ARM: shmobile: marzen: Use error values in usb_power_*
  ARM: tegra: defconfig fixes
  ARM: nomadik: fix IRQ assignment for SMC ethernet
  ARM: vt8500: Add missing NULL terminator in dt_compat
  clk: tegra: add ac97 controller clock
  clk: tegra: remove USB from clk init table
  ARM: dts: mvebu: Fix wrong the address reg value for the L2-cache node
  ARM: plat-orion: Fix num_resources and id for ge10 and ge11
  ARM: OMAP2+: hwmod: Remove sysc slave idle and auto idle apis
  SERIAL: OMAP: Remove the slave idle handling from the driver
  ARM: OMAP2+: serial: Remove the un-used slave idle hooks
  ARM: OMAP2+: hwmod-data: UART IP needs software control to manage sidle modes
  ARM: OMAP2+: hwmod: Add a new flag to handle SIDLE in SWSUP only in active
  ARM: OMAP2+: hwmod: Fix sidle programming in _enable_sysc()/_idle_sysc()
  arm: mvebu: fix the 'ranges' property to handle PCIe
  ARM: mvebu: select ARCH_REQUIRE_GPIOLIB for mvebu platform
  ARM: AM33XX: Add missing .clkdm_name to clkdiv32k_ick clock
  ...
</pre>
</div>
</content>
</entry>
<entry>
<title>tty: mxser: Fix build warning introduced by dfc7b837c7f9 (Re: linux-next: build warning after merge of the tty.current tree)</title>
<updated>2013-05-22T17:26:02+00:00</updated>
<author>
<name>Matwey V. Kornilov</name>
<email>matwey@sai.msu.ru</email>
</author>
<published>2013-05-22T07:13:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=e037f95ffb5355ffe295e1d106d02fefd284d882'/>
<id>e037f95ffb5355ffe295e1d106d02fefd284d882</id>
<content type='text'>
Fix build warning at mxser.c introduced by dfc7b837c7f9 (tty: mxser: fix
usage of opmode_ioaddr)

Signed-off-by: Matwey V. Kornilov &lt;matwey@sai.msu.ru&gt;
Reported-by: kbuild test robot &lt;fengguang.wu@intel.com&gt;
Reported-by: Stephen Rothwell &lt;sfr@canb.auug.org.au&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>
Fix build warning at mxser.c introduced by dfc7b837c7f9 (tty: mxser: fix
usage of opmode_ioaddr)

Signed-off-by: Matwey V. Kornilov &lt;matwey@sai.msu.ru&gt;
Reported-by: kbuild test robot &lt;fengguang.wu@intel.com&gt;
Reported-by: Stephen Rothwell &lt;sfr@canb.auug.org.au&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tty: mxser: fix usage of opmode_ioaddr</title>
<updated>2013-05-21T17:26:05+00:00</updated>
<author>
<name>Matwey V. Kornilov</name>
<email>matwey@sai.msu.ru</email>
</author>
<published>2013-05-21T09:57:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=dfc7b837c7f9f01f76511aa3eeea35232903e58f'/>
<id>dfc7b837c7f9f01f76511aa3eeea35232903e58f</id>
<content type='text'>
mxser_port-&gt;opmode_ioaddr is initialized only for MOXA_MUST_MU860_HWID
chips, but no precautions have been undertaken to prevent reading and
writing to undefined port number.

Signed-off-by: Matwey V. Kornilov &lt;matwey@sai.msu.ru&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>
mxser_port-&gt;opmode_ioaddr is initialized only for MOXA_MUST_MU860_HWID
chips, but no precautions have been undertaken to prevent reading and
writing to undefined port number.

Signed-off-by: Matwey V. Kornilov &lt;matwey@sai.msu.ru&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>serial: 8250_dw: add ACPI ID for Intel BayTrail</title>
<updated>2013-05-21T17:25:05+00:00</updated>
<author>
<name>Heikki Krogerus</name>
<email>heikki.krogerus@linux.intel.com</email>
</author>
<published>2013-05-21T06:34:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=9d83e1807e6462ac5c4edb7eae96c69594e8c8ef'/>
<id>9d83e1807e6462ac5c4edb7eae96c69594e8c8ef</id>
<content type='text'>
This is the same controller as on Intel Lynxpoint but the
ACPI ID is different.

Signed-off-by: Heikki Krogerus &lt;heikki.krogerus@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>
This is the same controller as on Intel Lynxpoint but the
ACPI ID is different.

Signed-off-by: Heikki Krogerus &lt;heikki.krogerus@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>TTY: Fix tty miss restart after we turn off flow-control</title>
<updated>2013-05-20T19:15:59+00:00</updated>
<author>
<name>Wang YanQing</name>
<email>udknight@gmail.com</email>
</author>
<published>2013-05-09T06:16:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=dab73b4eb9ef924a2b90dab84e539076d82b256f'/>
<id>dab73b4eb9ef924a2b90dab84e539076d82b256f</id>
<content type='text'>
I meet emacs hang in start if I do the operation below:
  1: echo 3 &gt; /proc/sys/vm/drop_caches
  2: emacs BigFile
  3: Press CTRL-S follow 2 immediately

Then emacs hang on, CTRL-Q can't resume, the terminal
hang on, you can do nothing with this terminal except
close it.

The reason is before emacs takeover control the tty,
we use CTRL-S to XOFF it. Then when emacs takeover the
control, it may don't use the flow-control, so emacs hang.
This patch fix it.

This patch will fix a kind of strange tty relation hang problem,
I believe I meet it with vim in ssh, and also see below bug report:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=465823

Signed-off-by: Wang YanQing &lt;udknight@gmail.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>
I meet emacs hang in start if I do the operation below:
  1: echo 3 &gt; /proc/sys/vm/drop_caches
  2: emacs BigFile
  3: Press CTRL-S follow 2 immediately

Then emacs hang on, CTRL-Q can't resume, the terminal
hang on, you can do nothing with this terminal except
close it.

The reason is before emacs takeover control the tty,
we use CTRL-S to XOFF it. Then when emacs takeover the
control, it may don't use the flow-control, so emacs hang.
This patch fix it.

This patch will fix a kind of strange tty relation hang problem,
I believe I meet it with vim in ssh, and also see below bug report:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=465823

Signed-off-by: Wang YanQing &lt;udknight@gmail.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>tty/vt: Fix vc_deallocate() lock order</title>
<updated>2013-05-20T19:15:59+00:00</updated>
<author>
<name>Peter Hurley</name>
<email>peter@hurleysoftware.com</email>
</author>
<published>2013-05-17T16:41:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=421b40a6286ee343d77d5e51f5ee6d04d7a2a90f'/>
<id>421b40a6286ee343d77d5e51f5ee6d04d7a2a90f</id>
<content type='text'>
Now that the tty port owns the flip buffers and i/o is allowed
from the driver even when no tty is attached, the destruction
of the tty port (and the flip buffers) must ensure that no
outstanding work is pending.

Unfortunately, this creates a lock order problem with the
console_lock (see attached lockdep report [1] below).

For single console deallocation, drop the console_lock prior
to port destruction. When multiple console deallocation,
defer port destruction until the consoles have been
deallocated.

tty_port_destroy() is not required if the port has not
been used; remove from vc_allocate() failure path.

[1] lockdep report from Dave Jones &lt;davej@redhat.com&gt;

 ======================================================
 [ INFO: possible circular locking dependency detected ]
 3.9.0+ #16 Not tainted
 -------------------------------------------------------
 (agetty)/26163 is trying to acquire lock:
 blocked:  ((&amp;buf-&gt;work)){+.+...}, instance: ffff88011c8b0020, at: [&lt;ffffffff81062065&gt;] flush_work+0x5/0x2e0

 but task is already holding lock:
 blocked:  (console_lock){+.+.+.}, instance: ffffffff81c2fde0, at: [&lt;ffffffff813bc201&gt;] vt_ioctl+0xb61/0x1230

 which lock already depends on the new lock.

 the existing dependency chain (in reverse order) is:

 -&gt; #1 (console_lock){+.+.+.}:
        [&lt;ffffffff810b3f74&gt;] lock_acquire+0xa4/0x210
        [&lt;ffffffff810416c7&gt;] console_lock+0x77/0x80
        [&lt;ffffffff813c3dcd&gt;] con_flush_chars+0x2d/0x50
        [&lt;ffffffff813b32b2&gt;] n_tty_receive_buf+0x122/0x14d0
        [&lt;ffffffff813b7709&gt;] flush_to_ldisc+0x119/0x170
        [&lt;ffffffff81064381&gt;] process_one_work+0x211/0x700
        [&lt;ffffffff8106498b&gt;] worker_thread+0x11b/0x3a0
        [&lt;ffffffff8106ce5d&gt;] kthread+0xed/0x100
        [&lt;ffffffff81601cac&gt;] ret_from_fork+0x7c/0xb0

 -&gt; #0 ((&amp;buf-&gt;work)){+.+...}:
        [&lt;ffffffff810b349a&gt;] __lock_acquire+0x193a/0x1c00
        [&lt;ffffffff810b3f74&gt;] lock_acquire+0xa4/0x210
        [&lt;ffffffff810620ae&gt;] flush_work+0x4e/0x2e0
        [&lt;ffffffff81065305&gt;] __cancel_work_timer+0x95/0x130
        [&lt;ffffffff810653b0&gt;] cancel_work_sync+0x10/0x20
        [&lt;ffffffff813b8212&gt;] tty_port_destroy+0x12/0x20
        [&lt;ffffffff813c65e8&gt;] vc_deallocate+0xf8/0x110
        [&lt;ffffffff813bc20c&gt;] vt_ioctl+0xb6c/0x1230
        [&lt;ffffffff813b01a5&gt;] tty_ioctl+0x285/0xd50
        [&lt;ffffffff811ba825&gt;] do_vfs_ioctl+0x305/0x530
        [&lt;ffffffff811baad1&gt;] sys_ioctl+0x81/0xa0
        [&lt;ffffffff81601d59&gt;] system_call_fastpath+0x16/0x1b

 other info that might help us debug this:

 [ 6760.076175]  Possible unsafe locking scenario:

        CPU0                    CPU1
        ----                    ----
   lock(console_lock);
                                lock((&amp;buf-&gt;work));
                                lock(console_lock);
   lock((&amp;buf-&gt;work));

  *** DEADLOCK ***

 1 lock on stack by (agetty)/26163:
  #0: blocked:  (console_lock){+.+.+.}, instance: ffffffff81c2fde0, at: [&lt;ffffffff813bc201&gt;] vt_ioctl+0xb61/0x1230
 stack backtrace:
 Pid: 26163, comm: (agetty) Not tainted 3.9.0+ #16
 Call Trace:
  [&lt;ffffffff815edb14&gt;] print_circular_bug+0x200/0x20e
  [&lt;ffffffff810b349a&gt;] __lock_acquire+0x193a/0x1c00
  [&lt;ffffffff8100a269&gt;] ? sched_clock+0x9/0x10
  [&lt;ffffffff8100a269&gt;] ? sched_clock+0x9/0x10
  [&lt;ffffffff8100a200&gt;] ? native_sched_clock+0x20/0x80
  [&lt;ffffffff810b3f74&gt;] lock_acquire+0xa4/0x210
  [&lt;ffffffff81062065&gt;] ? flush_work+0x5/0x2e0
  [&lt;ffffffff810620ae&gt;] flush_work+0x4e/0x2e0
  [&lt;ffffffff81062065&gt;] ? flush_work+0x5/0x2e0
  [&lt;ffffffff810b15db&gt;] ? mark_held_locks+0xbb/0x140
  [&lt;ffffffff8113c8a3&gt;] ? __free_pages_ok.part.57+0x93/0xc0
  [&lt;ffffffff810b15db&gt;] ? mark_held_locks+0xbb/0x140
  [&lt;ffffffff810652f2&gt;] ? __cancel_work_timer+0x82/0x130
  [&lt;ffffffff81065305&gt;] __cancel_work_timer+0x95/0x130
  [&lt;ffffffff810653b0&gt;] cancel_work_sync+0x10/0x20
  [&lt;ffffffff813b8212&gt;] tty_port_destroy+0x12/0x20
  [&lt;ffffffff813c65e8&gt;] vc_deallocate+0xf8/0x110
  [&lt;ffffffff813bc20c&gt;] vt_ioctl+0xb6c/0x1230
  [&lt;ffffffff810aec41&gt;] ? lock_release_holdtime.part.30+0xa1/0x170
  [&lt;ffffffff813b01a5&gt;] tty_ioctl+0x285/0xd50
  [&lt;ffffffff812b00f6&gt;] ? inode_has_perm.isra.46.constprop.61+0x56/0x80
  [&lt;ffffffff811ba825&gt;] do_vfs_ioctl+0x305/0x530
  [&lt;ffffffff812b04db&gt;] ? selinux_file_ioctl+0x5b/0x110
  [&lt;ffffffff811baad1&gt;] sys_ioctl+0x81/0xa0
  [&lt;ffffffff81601d59&gt;] system_call_fastpath+0x16/0x1b

Cc: Dave Jones &lt;davej@redhat.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>
Now that the tty port owns the flip buffers and i/o is allowed
from the driver even when no tty is attached, the destruction
of the tty port (and the flip buffers) must ensure that no
outstanding work is pending.

Unfortunately, this creates a lock order problem with the
console_lock (see attached lockdep report [1] below).

For single console deallocation, drop the console_lock prior
to port destruction. When multiple console deallocation,
defer port destruction until the consoles have been
deallocated.

tty_port_destroy() is not required if the port has not
been used; remove from vc_allocate() failure path.

[1] lockdep report from Dave Jones &lt;davej@redhat.com&gt;

 ======================================================
 [ INFO: possible circular locking dependency detected ]
 3.9.0+ #16 Not tainted
 -------------------------------------------------------
 (agetty)/26163 is trying to acquire lock:
 blocked:  ((&amp;buf-&gt;work)){+.+...}, instance: ffff88011c8b0020, at: [&lt;ffffffff81062065&gt;] flush_work+0x5/0x2e0

 but task is already holding lock:
 blocked:  (console_lock){+.+.+.}, instance: ffffffff81c2fde0, at: [&lt;ffffffff813bc201&gt;] vt_ioctl+0xb61/0x1230

 which lock already depends on the new lock.

 the existing dependency chain (in reverse order) is:

 -&gt; #1 (console_lock){+.+.+.}:
        [&lt;ffffffff810b3f74&gt;] lock_acquire+0xa4/0x210
        [&lt;ffffffff810416c7&gt;] console_lock+0x77/0x80
        [&lt;ffffffff813c3dcd&gt;] con_flush_chars+0x2d/0x50
        [&lt;ffffffff813b32b2&gt;] n_tty_receive_buf+0x122/0x14d0
        [&lt;ffffffff813b7709&gt;] flush_to_ldisc+0x119/0x170
        [&lt;ffffffff81064381&gt;] process_one_work+0x211/0x700
        [&lt;ffffffff8106498b&gt;] worker_thread+0x11b/0x3a0
        [&lt;ffffffff8106ce5d&gt;] kthread+0xed/0x100
        [&lt;ffffffff81601cac&gt;] ret_from_fork+0x7c/0xb0

 -&gt; #0 ((&amp;buf-&gt;work)){+.+...}:
        [&lt;ffffffff810b349a&gt;] __lock_acquire+0x193a/0x1c00
        [&lt;ffffffff810b3f74&gt;] lock_acquire+0xa4/0x210
        [&lt;ffffffff810620ae&gt;] flush_work+0x4e/0x2e0
        [&lt;ffffffff81065305&gt;] __cancel_work_timer+0x95/0x130
        [&lt;ffffffff810653b0&gt;] cancel_work_sync+0x10/0x20
        [&lt;ffffffff813b8212&gt;] tty_port_destroy+0x12/0x20
        [&lt;ffffffff813c65e8&gt;] vc_deallocate+0xf8/0x110
        [&lt;ffffffff813bc20c&gt;] vt_ioctl+0xb6c/0x1230
        [&lt;ffffffff813b01a5&gt;] tty_ioctl+0x285/0xd50
        [&lt;ffffffff811ba825&gt;] do_vfs_ioctl+0x305/0x530
        [&lt;ffffffff811baad1&gt;] sys_ioctl+0x81/0xa0
        [&lt;ffffffff81601d59&gt;] system_call_fastpath+0x16/0x1b

 other info that might help us debug this:

 [ 6760.076175]  Possible unsafe locking scenario:

        CPU0                    CPU1
        ----                    ----
   lock(console_lock);
                                lock((&amp;buf-&gt;work));
                                lock(console_lock);
   lock((&amp;buf-&gt;work));

  *** DEADLOCK ***

 1 lock on stack by (agetty)/26163:
  #0: blocked:  (console_lock){+.+.+.}, instance: ffffffff81c2fde0, at: [&lt;ffffffff813bc201&gt;] vt_ioctl+0xb61/0x1230
 stack backtrace:
 Pid: 26163, comm: (agetty) Not tainted 3.9.0+ #16
 Call Trace:
  [&lt;ffffffff815edb14&gt;] print_circular_bug+0x200/0x20e
  [&lt;ffffffff810b349a&gt;] __lock_acquire+0x193a/0x1c00
  [&lt;ffffffff8100a269&gt;] ? sched_clock+0x9/0x10
  [&lt;ffffffff8100a269&gt;] ? sched_clock+0x9/0x10
  [&lt;ffffffff8100a200&gt;] ? native_sched_clock+0x20/0x80
  [&lt;ffffffff810b3f74&gt;] lock_acquire+0xa4/0x210
  [&lt;ffffffff81062065&gt;] ? flush_work+0x5/0x2e0
  [&lt;ffffffff810620ae&gt;] flush_work+0x4e/0x2e0
  [&lt;ffffffff81062065&gt;] ? flush_work+0x5/0x2e0
  [&lt;ffffffff810b15db&gt;] ? mark_held_locks+0xbb/0x140
  [&lt;ffffffff8113c8a3&gt;] ? __free_pages_ok.part.57+0x93/0xc0
  [&lt;ffffffff810b15db&gt;] ? mark_held_locks+0xbb/0x140
  [&lt;ffffffff810652f2&gt;] ? __cancel_work_timer+0x82/0x130
  [&lt;ffffffff81065305&gt;] __cancel_work_timer+0x95/0x130
  [&lt;ffffffff810653b0&gt;] cancel_work_sync+0x10/0x20
  [&lt;ffffffff813b8212&gt;] tty_port_destroy+0x12/0x20
  [&lt;ffffffff813c65e8&gt;] vc_deallocate+0xf8/0x110
  [&lt;ffffffff813bc20c&gt;] vt_ioctl+0xb6c/0x1230
  [&lt;ffffffff810aec41&gt;] ? lock_release_holdtime.part.30+0xa1/0x170
  [&lt;ffffffff813b01a5&gt;] tty_ioctl+0x285/0xd50
  [&lt;ffffffff812b00f6&gt;] ? inode_has_perm.isra.46.constprop.61+0x56/0x80
  [&lt;ffffffff811ba825&gt;] do_vfs_ioctl+0x305/0x530
  [&lt;ffffffff812b04db&gt;] ? selinux_file_ioctl+0x5b/0x110
  [&lt;ffffffff811baad1&gt;] sys_ioctl+0x81/0xa0
  [&lt;ffffffff81601d59&gt;] system_call_fastpath+0x16/0x1b

Cc: Dave Jones &lt;davej@redhat.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>TTY: ehv_bytechan: add missing platform_driver_unregister() when module exit</title>
<updated>2013-05-20T19:15:59+00:00</updated>
<author>
<name>Wei Yongjun</name>
<email>yongjun_wei@trendmicro.com.cn</email>
</author>
<published>2013-04-27T10:14:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=df957d2b9c5c8aa12f050f94c9f15236fb0e51f1'/>
<id>df957d2b9c5c8aa12f050f94c9f15236fb0e51f1</id>
<content type='text'>
We have registered platform driver when module init, and
need unregister it when module exit.

Signed-off-by: Wei Yongjun &lt;yongjun_wei@trendmicro.com.cn&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>
We have registered platform driver when module init, and
need unregister it when module exit.

Signed-off-by: Wei Yongjun &lt;yongjun_wei@trendmicro.com.cn&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
