alistair23-linux/drivers/char
Eric W. Biederman bde0d2c98b [PATCH] vt: Make vt_pid a struct pid (making it pid wrap around safe).
I took a good hard look at the locking and it appears the locking on vt_pid
is the console semaphore.  Every modified path is called under the console
semaphore except reset_vc when it is called from fn_SAK or do_SAK both of
which appear to be in interrupt context.  In addition I need to be careful
because in the presence of an oops the console_sem may be arbitrarily
dropped.

Which leads me to conclude the current locking is inadequate for my needs.

Given the weird cases we could hit because of oops printing instead of
introducing an extra spin lock to protect the data and keep the pid to
signal and the signal to send in sync, I have opted to use xchg on just the
struct pid * pointer instead.

Due to console_sem we will stay in sync between vt_pid and vt_mode except
for a small window during a SAK, or oops handling.  SAK handling should
kill any user space process that care, and oops handling we are broken
anyway.  Besides the worst that can happen is that I try to send the wrong
signal.

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Cc: Oleg Nesterov <oleg@tv-sign.ru>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-10-02 07:57:14 -07:00
..
agp [AGPGART] printk fixups. 2006-09-28 19:50:07 -04:00
drm drm: Use register writes instead of BITBLT_MULTI packets for buffer swap blits 2006-09-22 05:32:34 +10:00
ftape [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
hw_random [PATCH] fix Intel RNG detection 2006-09-29 09:18:09 -07:00
ip2 [PATCH] ip2: use newer pci_get functions 2006-10-01 00:39:23 -07:00
ipmi [PATCH] ipmi: don't start kipmid if the IPMI driver can use interrupts 2006-10-01 00:39:26 -07:00
mwave [PATCH] Off-by-one in drivers/char/mwave/mwavedd.c 2006-10-01 00:39:24 -07:00
pcmcia [WAN]: Converted synclink drivers to use netif_carrier_*() 2006-07-21 14:44:55 -07:00
rio [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
tpm Merge branch 'merge' 2006-08-01 10:37:25 +10:00
watchdog [PATCH] OMAP: Add Watchdog driver support 2006-09-29 09:18:07 -07:00
.gitignore gitignore: misc files 2006-01-01 22:21:50 +01:00
amiserial.c [PATCH] irq-flags: drivers/char: Use the new IRQF_ constants 2006-07-02 13:58:49 -07:00
applicom.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
applicom.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
briq_panel.c [PATCH] briq_panel: read() and write() get __user pointers, damnit 2006-09-23 11:34:43 -07:00
cd1865.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ChangeLog Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
consolemap.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
cp437.uni Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cs5535_gpio.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
cyclades.c [PATCH] irq-flags: drivers/char: Use the new IRQF_ constants 2006-07-02 13:58:49 -07:00
decserial.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
defkeymap.c_shipped Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
defkeymap.map Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
digi.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
digi1.h [PATCH] Clean up the old digi support and rescue it 2005-09-07 16:57:20 -07:00
digiFep1.h [PATCH] Clean up the old digi support and rescue it 2005-09-07 16:57:20 -07:00
digiPCI.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ds1286.c [PATCH] proper flags type of spin_lock_irqsave() 2006-10-01 00:39:21 -07:00
ds1302.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
ds1620.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
dsp56k.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
dtlk.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
ec3104_keyb.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
efirtc.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
epca.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
epca.h [PATCH] epca iomem annotations + several missing readw() 2005-09-16 10:38:10 -07:00
epcaconfig.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
esp.c [PATCH] irq-flags: drivers/char: Use the new IRQF_ constants 2006-07-02 13:58:49 -07:00
generic_nvram.c [PATCH] powerpc: Kill _machine and hard-coded platform numbers 2006-03-28 23:15:54 +11:00
generic_serial.c [PATCH] generic_serial: remove private decoding of baud rate bits 2006-09-29 09:18:24 -07:00
genrtc.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
hangcheck-timer.c [PATCH] hangcheck: remove monotomic_clock on x86 2006-06-26 09:58:20 -07:00
hpet.c [PATCH] Don't print virtual address in HPET initialization 2006-09-26 10:52:28 +02:00
hvc_console.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc 2006-09-22 12:48:03 -07:00
hvc_console.h [POWERPC] Make the hvc_console output buffer size settable 2006-07-13 18:53:32 +10:00
hvc_iseries.c [POWERPC] Make the hvc_console output buffer size settable 2006-07-13 18:53:32 +10:00
hvc_rtas.c [POWERPC] Make the hvc_console output buffer size settable 2006-07-13 18:53:32 +10:00
hvc_vio.c [POWERPC] pseries: Constify & voidify get_property() 2006-07-31 15:55:04 +10:00
hvcs.c [PATCH] irq-flags: drivers/char: Use the new IRQF_ constants 2006-07-02 13:58:49 -07:00
hvsi.c Merge branch 'merge' 2006-08-08 17:09:11 +10:00
i8k.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
ip27-rtc.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
isicom.c [PATCH] isicom: correct firmware loading 2006-10-01 00:39:22 -07:00
istallion.c [PATCH] istallion: Remove private baud rate decoding, which is also broken in this case on some platforms 2006-09-29 09:18:24 -07:00
ite_gpio.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
Kconfig [PATCH] BLOCK: Make it possible to disable the block layer [try #6] 2006-09-30 20:52:31 +02:00
keyboard.c [PATCH] vt: rework the console spawning variables 2006-10-02 07:57:13 -07:00
lcd.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
lcd.h Resurrect Cobalt support for 2.6. 2005-10-29 19:30:42 +01:00
lp.c [PATCH] There is no devfs, there has never been a devfs, we have always been at war with... 2006-09-29 09:18:10 -07:00
Makefile [PATCH] Remove old drivers/char/s3c2410_rtc.c 2006-09-29 09:18:13 -07:00
mbcs.c [PATCH] MBCS: Use SEEK_{SET, CUR, END} instead of hardcoded values 2006-10-01 00:39:21 -07:00
mbcs.h [PATCH] mbcs trivial user annotations 2005-05-04 07:33:13 -07:00
mem.c [PATCH] mem driver: fix conditional on isa i/o support 2006-09-29 09:18:22 -07:00
misc.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
mmtimer.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
moxa.c [PATCH] serial: Fix up offenders peering at baud bits directly 2006-10-01 00:39:20 -07:00
mspec.c [PATCH] mspec driver 2006-09-27 08:26:13 -07:00
mxser.c [PATCH] serial: Fix up offenders peering at baud bits directly 2006-10-01 00:39:20 -07:00
mxser.h [PATCH] Typo fixes 2006-03-28 09:16:08 -08:00
n_hdlc.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
n_r3964.c [PATCH] R3964: fix GFP_KERNEL allocations in timer function 2006-06-25 10:01:17 -07:00
n_tty.c [PATCH] remove TTY_DONT_FLIP 2006-06-28 14:59:05 -07:00
nsc_gpio.c [PATCH] gpio: cosmetics: remove needless newlines 2006-07-14 21:53:54 -07:00
nvram.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
nwbutton.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
nwbutton.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
nwflash.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
pc8736x_gpio.c [PATCH] drivers/char/pc8736x_gpio.c: remove unused static functions 2006-09-29 09:18:05 -07:00
ppdev.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
pty.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
qtronix.c [PATCH] irq-flags: drivers/char: Use the new IRQF_ constants 2006-07-02 13:58:49 -07:00
qtronixmap.c_shipped Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
qtronixmap.map Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
random.c [PATCH] BLOCK: Make it possible to disable the block layer [try #6] 2006-09-30 20:52:31 +02:00
raw.c [PATCH] Streamline generic_file_* interfaces and filemap cleanups 2006-10-01 00:39:28 -07:00
riscom8.c [PATCH] serial: Fix up offenders peering at baud bits directly 2006-10-01 00:39:20 -07:00
riscom8.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
riscom8_reg.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
rocket.c [PATCH] devfs: Rename TTY_DRIVER_NO_DEVFS to TTY_DRIVER_DYNAMIC_DEV 2006-06-26 12:25:09 -07:00
rocket.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
rocket_int.h [PATCH] drivers/char/rocket.c: cleanups 2005-06-25 16:25:04 -07:00
rtc.c [PATCH] remove unnecessary barrier in rtc_get_rtc_time 2006-09-29 09:18:05 -07:00
scan_keyb.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
scan_keyb.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
scc.h [PATCH] m68k: static vs. extern in scc.h 2006-01-12 09:09:00 -08:00
scx200_gpio.c [PATCH] scx200_gpio export cleanups 2006-09-29 09:18:06 -07:00
selection.c [PATCH] tty locking on resize 2006-09-29 09:18:12 -07:00
ser_a2232.c [PATCH] sem2mutex: serial ->port_write_mutex 2006-03-23 07:38:14 -08:00
ser_a2232.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ser_a2232fw.ax Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ser_a2232fw.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
serial167.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
snsc.c [IA64] add platform check to snsc driver init 2006-08-02 16:07:55 -07:00
snsc.h [IA64-SGI] Handle SC env. powerdown events 2006-01-26 13:32:26 -08:00
snsc_event.c [PATCH] snsc: switch from force_sig to kill_proc 2006-07-10 13:24:26 -07:00
sonypi.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
specialix.c [PATCH] Char: specialix, kill unneeded page alloc 2006-10-01 00:39:25 -07:00
specialix_io8.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
stallion.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
sx.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
sx.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sxboards.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sxwindow.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
synclink.c [WAN]: Converted synclink drivers to use netif_carrier_*() 2006-07-21 14:44:55 -07:00
synclink_gt.c [PATCH] synclink_gt: increase max devices 2006-10-01 00:39:22 -07:00
synclinkmp.c [WAN]: Converted synclink drivers to use netif_carrier_*() 2006-07-21 14:44:55 -07:00
sysrq.c [PATCH] sysrq: disable lockdep on reboot 2006-10-01 00:39:24 -07:00
tb0219.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
tipar.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
tlclk.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
toshiba.c [PATCH] make more file_operation structs static 2006-07-03 15:26:59 -07:00
tty_io.c [PATCH] rate limiting for the ldisc open failure messages 2006-09-29 09:18:23 -07:00
tty_ioctl.c [PATCH] Fix locking for tty drivers when doing urgent characters 2006-09-29 09:18:24 -07:00
vc_screen.c [PATCH] There is no devfs, there has never been a devfs, we have always been at war with... 2006-09-29 09:18:10 -07:00
viocons.c [POWERPC] iseries: A new iSeries console 2006-07-13 18:51:22 +10:00
viotape.c [POWERPC] iseries: Small viotape cleanup allowed by devfs removal 2006-07-13 18:56:00 +10:00
vme_scc.c [PATCH] irq-flags: drivers/char: Use the new IRQF_ constants 2006-07-02 13:58:49 -07:00
vr41xx_giu.c [MIPS] vr41xx: Move IRQ numbers to asm-mips/vr41xx/irq.h 2006-07-13 21:26:19 +01:00
vt.c [PATCH] vt: Make vt_pid a struct pid (making it pid wrap around safe). 2006-10-02 07:57:14 -07:00
vt_ioctl.c [PATCH] vt: Make vt_pid a struct pid (making it pid wrap around safe). 2006-10-02 07:57:14 -07:00