linux-uconsole/drivers/char
Alan Cox 2526222192 tty: Fix the ldisc hangup race
commit 638b9648ab upstream.

This was noticed by Matthias Urlichs and he proposed a fix. This patch
does the fixing a different way to avoid introducing several new race
conditions into the code.

The problem case is TTY_DRIVER_RESET_TERMIOS = 0. In that case while we
abort the ldisc change, the hangup processing has not cleaned up and restarted
the ldisc either.

We can't restart the ldisc stuff in the set_ldisc as we don't know what
the hangup did and may touch stuff we shouldn't as we are no longer
supposed to influence the tty at that point in case it has been re-opened
before we get rescheduled.

Instead do it the simple way. Always re-init the ldisc on the hangup, but
use TTY_DRIVER_RESET_TERMIOS to indicate that we should force N_TTY.

Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2010-03-15 08:49:54 -07:00
..
agp agp/intel-agp: Clear entire GTT on startup 2010-01-18 10:19:53 -08:00
hw_random move virtrng_remove to .devexit.text 2009-10-22 16:39:34 +10:30
ip2 tty: rewrite the ldisc locking 2009-06-11 08:51:01 -07:00
ipmi headers: remove sched.h from poll.h 2009-10-04 15:05:10 -07:00
mwave mwave: fix read buffer overflow 2009-09-24 07:21:03 -07:00
pcmcia pcmcia: fix read buffer overflow 2009-09-22 07:17:42 -07:00
rio headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
tpm tpm_tis: TPM_STS_DATA_EXPECT workaround 2010-03-15 08:49:42 -07:00
xilinx_hwicap const: constify remaining file_operations 2009-10-01 16:11:11 -07:00
.gitignore
amiserial.c headers: smp_lock.h redux 2009-07-12 12:22:34 -07:00
apm-emulation.c const: constify remaining file_operations 2009-10-01 16:11:11 -07:00
applicom.c headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
applicom.h
bfin-otp.c const: constify remaining file_operations 2009-10-01 16:11:11 -07:00
bfin_jtag_comm.c bfin_jtag_comm: clean up printk usage 2009-06-22 11:32:23 -07:00
briq_panel.c
bsr.c powerpc/BSR: Fix BSR to allow mmap of small BSR on 64k kernel 2009-06-26 14:37:26 +10:00
cd1865.h
ChangeLog
consolemap.c consolemap: indentation & braces disagree - reindent 2009-01-06 15:59:30 -08:00
cp437.uni unicode table for cp437 2008-12-13 11:25:49 -08:00
cs5535_gpio.c
cyclades.c cyclades: fix read buffer overflow 2009-10-01 16:11:16 -07:00
defkeymap.c_shipped
defkeymap.map
digi1.h
digiFep1.h
digiPCI.h
ds1302.c rtc: use bcd2bin/bin2bcd 2008-10-20 08:52:41 -07:00
ds1620.c [ARM] netwinder: clean up GPIO naming 2008-12-13 09:12:07 +00:00
dsp56k.c
dtlk.c headers: remove sched.h from poll.h 2009-10-04 15:05:10 -07:00
efirtc.c
epca.c headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
epca.h
epcaconfig.h
esp.c serial: move delta_msr_wait into the tty_port 2009-09-19 13:13:31 -07:00
generic_nvram.c powerpc/nvram: Enable use Generic NVRAM driver for different size chips 2009-09-11 16:02:11 +10:00
generic_serial.c headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
genrtc.c headers: Fix build after <linux/sched.h> removal 2009-10-13 10:20:16 -07:00
hangcheck-timer.c
hpet.c hpet: hpet driver periodic timer setup bug fixes 2009-09-24 07:21:03 -07:00
hvc_beat.c powerpc/cell: Use correct types in beat files 2009-01-08 16:25:16 +11:00
hvc_console.c hvc_console: Provide (un)locked version for hvc_resize() 2009-09-24 15:12:47 +10:00
hvc_console.h hvc_console: Provide (un)locked version for hvc_resize() 2009-09-24 15:12:47 +10:00
hvc_irq.c hvc_console: Call free_irq() only if request_irq() was successful 2009-01-13 14:48:01 +11:00
hvc_iseries.c drivers/hvc: Add missing __devexit_p() 2009-06-16 14:15:44 +10:00
hvc_iucv.c hvc_console: Provide (un)locked version for hvc_resize() 2009-09-24 15:12:47 +10:00
hvc_rtas.c
hvc_udbg.c powerpc: udbg-based backend for hvc_console 2008-11-19 16:04:25 +11:00
hvc_vio.c hvc_console: Add __init and __exit to hvc_vio 2009-08-28 14:24:11 +10:00
hvc_xen.c xen/hvc: make sure console output is always emitted, with explicit polling 2009-11-03 11:05:51 -08:00
hvcs.c Merge commit 'origin/master' into next 2009-06-18 11:16:55 +10:00
hvsi.c powerpc/hvsi: Avoid calculating possibly-invalid address 2009-08-20 10:29:28 +10:00
i8k.c i8k: Add Dell Vostro systems 2009-01-02 10:28:32 -08:00
isicom.c isicom: split the open method for the isicom device 2009-09-19 13:13:27 -07:00
istallion.c headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
Kconfig tty: Mark generic_serial users as BROKEN 2009-10-30 14:43:12 -07:00
keyboard.c Input: keyboard - fix braille keyboard keysym generation 2009-11-25 23:05:17 -08:00
lp.c
Makefile drivers/char/uv_mmtimer.c: add memory mapped RTC driver for UV 2009-09-24 07:21:03 -07:00
mbcs.c [IA64] mbcs: fix printk format warnings 2009-09-15 08:42:00 -07:00
mbcs.h
mem.c devmem: fix kmem write bug on memory holes 2010-02-23 07:37:54 -08:00
misc.c seq_file: constify seq_operations 2009-09-23 07:39:29 -07:00
mmtimer.c
moxa.c headers: smp_lock.h redux 2009-07-12 12:22:34 -07:00
moxa.h
mspec.c const: mark struct vm_struct_operations 2009-09-27 11:39:25 -07:00
mxser.c tty: Char: mxser, use THRE for ASPP_OQUEUE ioctl 2009-09-19 13:13:38 -07:00
mxser.h
n_hdlc.c headers: smp_lock.h redux 2009-07-12 12:22:34 -07:00
n_r3964.c headers: smp_lock.h redux 2009-07-12 12:22:34 -07:00
n_tty.c n_tty: move echoctl check and clean up logic 2009-09-19 13:13:34 -07:00
nozomi.c nozomi: quick fix for the close/close bug 2010-01-25 10:49:20 -08:00
nsc_gpio.c
nvram.c [PATCH] nvram - convert PRINT_PROC to seq_file 2008-11-11 09:56:00 +00:00
nwbutton.c
nwbutton.h
nwflash.c [ARM] netwinder: clean up GPIO naming 2008-12-13 09:12:07 +00:00
pc8736x_gpio.c pc8736x_gpio: add support for PC87365 chips 2008-10-20 08:52:40 -07:00
ppdev.c ppdev: reduce kernel log spam 2009-06-18 13:03:54 -07:00
ps3flash.c ps3flash: Always read chunks of 256 KiB, and cache them 2009-06-15 16:47:27 +10:00
pty.c headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
random.c random: Remove unused inode variable 2010-02-09 04:50:58 -08:00
raw.c Driver-Core: extend devnode callbacks to provide permissions 2009-09-19 12:50:38 -07:00
riscom8.c tty: riscom8, fix tty refcnt 2009-09-19 13:13:37 -07:00
riscom8.h
riscom8_reg.h
rocket.c headers: smp_lock.h redux 2009-07-12 12:22:34 -07:00
rocket.h tty: rocketport uses different port flags to everyone else 2009-01-02 10:19:39 -08:00
rocket_int.h tty: rocketport uses different port flags to everyone else 2009-01-02 10:19:39 -08:00
rtc.c headers: Fix build after <linux/sched.h> removal 2009-10-13 10:20:16 -07:00
scc.h m68k: atari - Rename "mfp" to "st_mfp" 2009-02-22 09:23:02 -08:00
scx200_gpio.c
selection.c tty: rewrite the ldisc locking 2009-06-11 08:51:01 -07:00
ser_a2232.c headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
ser_a2232.h
ser_a2232fw.ax
ser_a2232fw.h
serial167.c serial167: fix read buffer overflow 2009-10-01 16:11:16 -07:00
snsc.c
snsc.h
snsc_event.c
sonypi.c headers: Fix build after <linux/sched.h> removal 2009-10-13 10:20:16 -07:00
specialix.c specialix.c: convert nested spin_lock_irqsave to spin_lock 2009-07-20 16:38:43 -07:00
specialix_io8.h
stallion.c headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
sx.c headers: smp_lock.h redux 2009-07-12 12:22:34 -07:00
sx.h
sxboards.h
sxwindow.h
synclink.c hdlc: convert to netdev_tx_t 2009-09-01 01:13:31 -07:00
synclink_gt.c hdlc: convert to netdev_tx_t 2009-09-01 01:13:31 -07:00
synclinkmp.c hdlc: convert to netdev_tx_t 2009-09-01 01:13:31 -07:00
sysrq.c perf: Do the big rename: Performance Counters -> Performance Events 2009-09-21 14:28:04 +02:00
tb0219.c Update Yoichi Yuasa's e-mail address 2009-07-03 15:45:29 +01:00
tlclk.c headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
toshiba.c
tty_audit.c tty: remove buffer special casing 2009-06-11 08:51:02 -07:00
tty_buffer.c tty: use the new 'flush_delayed_work()' helper to do ldisc flush 2009-10-14 09:20:41 -07:00
tty_io.c Fix race in tty_fasync() properly 2010-02-23 07:37:44 -08:00
tty_ioctl.c tty: vt: use printk_once 2009-09-19 13:13:35 -07:00
tty_ldisc.c tty: Fix the ldisc hangup race 2010-03-15 08:49:54 -07:00
tty_port.c tty_port: handle the nonblocking open of a dead port corner case 2009-11-30 16:38:25 -08:00
uv_mmtimer.c drivers/char/uv_mmtimer.c: add memory mapped RTC driver for UV 2009-09-24 07:21:03 -07:00
vc_screen.c vc: create vcs(a) devices for consoles 2009-07-20 16:38:43 -07:00
viotape.c tape: beyond ARRAY_SIZE of viocd_diskinfo 2009-06-02 10:32:34 +10:00
virtio_console.c virtio: let header files include virtio_ids.h 2009-10-22 16:39:28 +10:30
vme_scc.c m68k: vme_scc - Kill warn_unused_result warnings 2009-01-12 20:56:38 +01:00
vt.c tty: vt: use printk_once 2009-09-19 13:13:35 -07:00
vt_ioctl.c vt: Fix use of "new" in a struct field 2009-11-19 13:43:06 -08:00