linux/drivers/char
Christoph Lameter 9b0f8b040a [PATCH] Terminate process that fails on a constrained allocation
Some allocations are restricted to a limited set of nodes (due to memory
policies or cpuset constraints).  If the page allocator is not able to find
enough memory then that does not mean that overall system memory is low.

In particular going postal and more or less randomly shooting at processes
is not likely going to help the situation but may just lead to suicide (the
whole system coming down).

It is better to signal to the process that no memory exists given the
constraints that the process (or the configuration of the process) has
placed on the allocation behavior.  The process may be killed but then the
sysadmin or developer can investigate the situation.  The solution is
similar to what we do when running out of hugepages.

This patch adds a check before we kill processes.  At that point
performance considerations do not matter much so we just scan the zonelist
and reconstruct a list of nodes.  If the list of nodes does not contain all
online nodes then this is a constrained allocation and we should kill the
current process.

Signed-off-by: Christoph Lameter <clameter@sgi.com>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: Andi Kleen <ak@muc.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-02-20 20:00:09 -08:00
..
agp [AGPGART] 945GM support for agpgart 2006-01-19 16:19:35 -08:00
drm [PATCH] Remove "RV370 5B60 [Radeon X300 (PCIE)]" from DRI list 2006-02-13 11:14:45 -08:00
ftape ftape: remove some outdated information from Kconfig files 2006-01-15 01:57:47 +01:00
ip2 [PATCH] ip2main.c warning fixes 2006-02-03 08:32:10 -08:00
ipmi [PATCH] IPMI: fix issues reported by Coverity in ipmi_msghandler.c 2006-02-03 08:32:11 -08:00
mwave [PATCH] mwave: missing __user in ioctl struct declaration 2005-12-15 10:04:31 -08:00
pcmcia [PATCH] TTY layer buffering revamp 2006-01-10 08:01:59 -08:00
rio [PATCH] rio cleanups 2006-02-03 08:32:04 -08:00
tpm [PATCH] Infineon TPM: IO-port leakage fix, WTX-bugfix 2006-02-17 13:59:26 -08:00
watchdog [WATCHDOG] pcwd.c - update module version info 2006-02-12 14:46:48 +01:00
.gitignore gitignore: misc files 2006-01-01 22:21:50 +01:00
amiserial.c [PATCH] remove unused tmp_buf_sem's 2006-01-14 10:41:42 -08:00
applicom.c [PATCH] applicom: fix error handling 2005-09-10 10:06:25 -07:00
applicom.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -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 [PATCH] kfree cleanup: drivers/char 2005-11-07 07:54:02 -08:00
cp437.uni Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cs5535_gpio.c [PATCH] i386: GPIO driver for AMD CS5535/CS5536 2006-01-10 08:01:24 -08:00
cyclades.c [PATCH] new tty buffering locking fix 2006-02-03 08:32:09 -08:00
decserial.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07: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
digi1.h [PATCH] Clean up the old digi support and rescue it 2005-09-07 16:57:20 -07:00
digi.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -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 Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ds1302.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ds1620.c [PATCH] char/ds1620: use msleep() instead of schedule_timeout() 2005-06-25 16:24:57 -07:00
dsp56k.c [PATCH] m68k: dsp56k __user annotations 2006-01-12 09:09:04 -08:00
dtlk.c [PATCH] misc verify_area cleanups 2005-05-01 08:59:08 -07:00
ec3104_keyb.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
efirtc.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
epca.c [PATCH] TTY layer buffering revamp 2006-01-10 08:01:59 -08: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] Fix locking error in esp 2006-02-14 10:01:39 -08:00
generic_nvram.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
generic_serial.c [PATCH] remove unused tmp_buf_sem's 2006-01-14 10:41:42 -08:00
genrtc.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
hangcheck-timer.c [PATCH] s390: hangcheck timer support 2006-02-01 08:53:24 -08:00
hpet.c [PATCH] HPET: handle multiple ACPI EXTENDED_IRQ resources 2006-02-14 16:09:34 -08:00
hvc_console.c [PATCH] TTY layer buffering revamp 2006-01-10 08:01:59 -08:00
hvc_vio.c powerpc: don't duplicate name between vio_driver and device_driver 2005-10-24 15:42:12 +10:00
hvcs.c [PATCH] TTY layer buffering revamp 2006-01-10 08:01:59 -08:00
hvsi.c [PATCH] drivers/char: Use ARRAY_SIZE macro 2006-01-10 08:01:56 -08:00
hw_random.c [PATCH] hw_random: 82801AB PCI Bridge support 2006-01-08 20:14:06 -08:00
i8k.c [PATCH] I8K: fix /proc reporting of blank service tags 2005-11-12 11:42:32 -08:00
ip2.c [PATCH] changing CONFIG_LOCALVERSION rebuilds too much, for no good reason 2005-11-09 07:55:57 -08:00
ip2main.c [PATCH] ip2main.c warning fixes 2006-02-03 08:32:10 -08:00
ip27-rtc.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
isicom.c [PATCH] char/isicom: More whitespaces and coding style 2006-01-10 08:02:01 -08:00
istallion.c [PATCH] TTY layer buffering revamp 2006-01-10 08:01:59 -08:00
ite_gpio.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
Kconfig [PATCH] synclink_gt is PCI-only 2006-02-08 01:04:50 -05:00
keyboard.c [SPARC]: introduce a SPARC Kconfig symbol 2005-12-22 23:09:54 -08:00
lcd.c Resurrect Cobalt support for 2.6. 2005-10-29 19:30:42 +01:00
lcd.h Resurrect Cobalt support for 2.6. 2005-10-29 19:30:42 +01:00
lp.c [PATCH] Driver Core: fix up all callers of class_device_create() 2005-10-28 09:52:52 -07:00
Makefile [PATCH] i386: GPIO driver for AMD CS5535/CS5536 2006-01-10 08:01:24 -08:00
mbcs.c [IA64] mbcs_init() should give up unless running on sn2 2005-10-04 09:39:18 -07:00
mbcs.h [PATCH] mbcs trivial user annotations 2005-05-04 07:33:13 -07:00
mem.c [PATCH] powerpc: iSeries fixes for build with no PCI 2006-01-12 20:09:30 +11:00
misc.c [PATCH] Driver Core: fix up all callers of class_device_create() 2005-10-28 09:52:52 -07:00
mmtimer.c [PATCH] shrink mmtimer memory size 2006-01-06 15:22:28 -08:00
moxa.c [PATCH] moxa serial: add proper capability check 2006-01-10 09:45:36 -08:00
mxser.c [PATCH] TTY layer buffering revamp 2006-01-10 08:01:59 -08:00
mxser.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
n_hdlc.c [PATCH] n_hdlc.c: remove unused declaration 2006-01-10 08:02:00 -08:00
n_r3964.c [PATCH] TTY layer buffering revamp 2006-01-10 08:01:59 -08:00
n_tty.c [PATCH] TTY layer buffering revamp 2006-01-10 08:01:59 -08:00
nvram.c [PATCH] drivers/char: Use ARRAY_SIZE macro 2006-01-10 08:01:56 -08:00
nwbutton.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
nwbutton.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
nwflash.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ppdev.c [PATCH] Driver Core: fix up all callers of class_device_create() 2005-10-28 09:52:52 -07:00
pty.c [PATCH] TTY layer buffering revamp 2006-01-10 08:01:59 -08:00
qtronix.c qtronix.c: Handle kmalloc failure. 2005-10-29 19:30:55 +01: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] random: get rid of sparse warning 2006-01-11 18:42:11 -08:00
raw.c [PATCH] Driver Core: fix up all callers of class_device_create() 2005-10-28 09:52:52 -07:00
riscom8_reg.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
riscom8.c [PATCH] remove unused tmp_buf_sem's 2006-01-14 10:41:42 -08:00
riscom8.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
rocket.c [PATCH] Fix RocketPort driver 2006-02-03 08:31:59 -08:00
rocket.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
rtc.c [PATCH] Allow reading CMOS day of week register 2006-01-11 18:42:10 -08:00
s3c2410-rtc.c [ARM] Move asm/hardware/clock.h to linux/clk.h 2006-01-07 16:15:52 +00: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 Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
selection.c [PATCH] TTY layer buffering revamp 2006-01-10 08:01:59 -08:00
ser_a2232.c [PATCH] missing include in ser_a2232 2006-02-07 20:57:25 -05: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 [PATCH] remove unused tmp_buf_sem's 2006-01-14 10:41:42 -08:00
snsc_event.c [IA64-SGI] fix unaligned memory access in snsc_event.c 2005-08-15 14:17:49 -07:00
snsc.c Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 2005-10-28 21:09:26 -07:00
snsc.h [IA64] Altix system controller event handling 2005-04-25 13:28:52 -07:00
sonypi.c [PATCH] sonypi: Enable ACPI events for Sony laptop hotkeys 2006-01-08 20:14:03 -08:00
specialix_io8.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
specialix.c [PATCH] remove unused tmp_buf_sem's 2006-01-14 10:41:42 -08:00
stallion.c return statement cleanup - kill pointless parentheses 2006-01-15 02:37:08 +01:00
sx.c [PATCH] sx.c printk warning fixes 2006-02-03 08:32:03 -08: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_gt.c [PATCH] synclink_gt fix size of register value storage 2006-01-18 19:20:16 -08:00
synclink.c [PATCH] remove unused tmp_buf_sem's 2006-01-14 10:41:42 -08:00
synclinkmp.c [PATCH] TTY layer buffering revamp 2006-01-10 08:01:59 -08:00
sysrq.c [PATCH] Terminate process that fails on a constrained allocation 2006-02-20 20:00:09 -08:00
tb0219.c Update Yoichi Yuasa's email address. 2006-01-10 13:39:07 +00:00
tipar.c [PATCH] tipar fixes 2006-02-11 21:41:13 -08:00
tlclk.c [PATCH] tlclk driver update 2006-01-18 19:25:49 -08:00
toshiba.c [PATCH] Toshiba driver cleanup 2005-06-25 16:24:24 -07:00
tty_io.c [PATCH] tty reference count fix 2006-02-14 16:09:33 -08:00
tty_ioctl.c [PATCH] coverity: tty_ldisc_ref return null check 2005-06-28 21:20:34 -07:00
vc_screen.c [PATCH] fix ia64 compile failure with gcc4.1 2005-12-29 10:19:21 -08:00
viocons.c [PATCH] powerpc: remove bitfields from HvLpEvent 2006-01-12 20:09:29 +11:00
viotape.c [PATCH] changing CONFIG_LOCALVERSION rebuilds too much, for no good reason 2005-11-09 07:55:57 -08:00
vme_scc.c [PATCH] TTY layer buffering revamp 2006-01-10 08:01:59 -08:00
vr41xx_giu.c Update Yoichi Yuasa's email address. 2006-01-10 13:39:07 +00:00
vr41xx_rtc.c Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus 2006-01-10 09:00:55 -08:00
vt_ioctl.c [PATCH] Only disallow _setting_ of function key string 2005-11-07 07:53:39 -08:00
vt.c [PATCH] fbcon: Fix screen artifacts when moving cursor 2006-02-01 08:53:26 -08:00