linux-stable-rt/mm
Paul Jackson 505970b96e [PATCH] cpuset oom lock fix
The problem, reported in:

  http://bugzilla.kernel.org/show_bug.cgi?id=5859

and by various other email messages and lkml posts is that the cpuset hook
in the oom (out of memory) code can try to take a cpuset semaphore while
holding the tasklist_lock (a spinlock).

One must not sleep while holding a spinlock.

The fix seems easy enough - move the cpuset semaphore region outside the
tasklist_lock region.

This required a few lines of mechanism to implement.  The oom code where
the locking needs to be changed does not have access to the cpuset locks,
which are internal to kernel/cpuset.c only.  So I provided a couple more
cpuset interface routines, available to the rest of the kernel, which
simple take and drop the lock needed here (cpusets callback_sem).

Signed-off-by: Paul Jackson <pj@sgi.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-14 18:27:10 -08:00
..
Kconfig
Makefile [PATCH] slob: introduce the SLOB allocator 2006-01-08 20:13:41 -08:00
bootmem.c
fadvise.c [PATCH] fadvise: return ESPIPE on FIFO/pipe 2006-01-08 20:14:00 -08:00
filemap.c [PATCH] move capable() to capability.h 2006-01-11 18:42:13 -08:00
filemap.h
filemap_xip.c [PATCH] replace inode_update_time with file_update_time 2006-01-10 08:01:30 -08:00
fremap.c
highmem.c
hugetlb.c
internal.h
madvise.c
memory.c [PATCH] mutex subsystem, semaphore to mutex: VFS, ->i_sem 2006-01-09 15:59:24 -08:00
memory_hotplug.c
mempolicy.c [PATCH] Add tmpfs options for memory placement policies 2006-01-14 18:27:07 -08:00
mempool.c
mincore.c
mlock.c [PATCH] move capable() to capability.h 2006-01-11 18:42:13 -08:00
mmap.c [PATCH] move capable() to capability.h 2006-01-11 18:42:13 -08:00
mprotect.c
mremap.c [PATCH] move capable() to capability.h 2006-01-11 18:42:13 -08:00
msync.c [PATCH] mutex subsystem, semaphore to mutex: VFS, ->i_sem 2006-01-09 15:59:24 -08:00
nommu.c
oom_kill.c [PATCH] cpuset oom lock fix 2006-01-14 18:27:10 -08:00
page-writeback.c
page_alloc.c [PATCH] memmap_init_zone(): remove uneccesary page++ 2006-01-12 09:08:49 -08:00
page_io.c
pdflush.c
prio_tree.c
readahead.c
rmap.c [PATCH] mutex subsystem, semaphore to mutex: VFS, ->i_sem 2006-01-09 15:59:24 -08:00
shmem.c [PATCH] Add tmpfs options for memory placement policies 2006-01-14 18:27:07 -08:00
slab.c [PATCH] fix/simplify mutex debugging code 2006-01-11 08:14:16 -08:00
slob.c [PATCH] slob: introduce the SLOB allocator 2006-01-08 20:13:41 -08:00
sparse.c
swap.c [XFS] Export pagevec_lookup for use on the XFS page writeout path, 2006-01-11 20:47:41 +11:00
swap_state.c
swapfile.c [PATCH] move capable() to capability.h 2006-01-11 18:42:13 -08:00
thrash.c
tiny-shmem.c [PATCH] do_truncate() call fix in tiny-shmem.c 2006-01-12 09:08:49 -08:00
truncate.c [PATCH] mutex subsystem, semaphore to mutex: VFS, ->i_sem 2006-01-09 15:59:24 -08:00
util.c [PATCH] slob: introduce mm/util.c for shared functions 2006-01-08 20:13:41 -08:00
vmalloc.c
vmscan.c