linux/mm
Alok Kataria c7e43c78ae [PATCH] Fix slab BUG_ON() triggered by change in array cache size
With the new changes that we made in the initialization of the slab
allocator, we first setup the cache from which array caches are allocated,
and then the cache, from which kmem_list3's are allocated.

Now if the array cache comes from a cache in which objsize > 32, (in this
instance size-64) then, first size-64 cache will be allocated and then the
size-128 (if this is the cache from which kmem_list3's are going to be
allocated).

So with these new changes, we are not guaranteed that we will be
initializing the malloc_sizes array in a serialized order. Thus there is
a bug in __find_general_cachep, as we are checking whether the first
cache_sizes ptr is NULL.

This is replaced by checking whether the array-cache cache is initialized.
Attached is a patch which does that.  Boots fine on a x86-64, with
DEBUG_SPIN, DEBUG_SLAB, and preempt.

Attached is a patch which does that.  Boots fine on a x86-64, with
DEBUG_SPIN, DEBUG_SLAB, and preempt.Thanks & Regards, Alok

Signed-off-by: Alok N Kataria <alokk@calsoftinc.com>
Signed-off-by: Shobhit Dayal <shobhitdayal.com>
Cc: Manfred Spraul <manfred@colorfullife.com>
Cc: Christoph Lameter <christoph@lameter.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-14 12:31:45 -07:00
..
bootmem.c [PATCH] x86-64: Reverse order of bootmem lists 2005-09-12 10:49:56 -07:00
fadvise.c
filemap_xip.c [PATCH] execute-in-place fixes 2005-07-15 09:54:50 -07:00
filemap.c [PATCH] mm/filemap.c: make two functions static 2005-09-10 10:06:25 -07:00
filemap.h
fremap.c
highmem.c
hugetlb.c [PATCH] hugetlb: move stale pte check into huge_pte_alloc() 2005-09-05 00:05:46 -07:00
internal.h
Kconfig [PATCH] sparsemem extreme implementation 2005-09-05 00:05:38 -07:00
madvise.c [PATCH] mm: fix madvise vma merging 2005-09-05 00:05:44 -07:00
Makefile
memory.c [PATCH] mm/filemap.c: make two functions static 2005-09-10 10:06:25 -07:00
mempolicy.c [PATCH] Fix MPOL_F_VERIFY 2005-09-13 08:22:28 -07:00
mempool.c [PATCH] propagate __nocast annotations 2005-07-07 18:23:46 -07:00
mincore.c
mlock.c
mmap.c [PATCH] error path in setup_arg_pages() misses vm_unacct_memory() 2005-09-14 11:18:13 -07:00
mprotect.c
mremap.c [PATCH] mm: remap ZERO_PAGE mappings 2005-09-05 00:05:44 -07:00
msync.c
nommu.c [PATCH] uclinux: add NULL check, 0 end valid check and some more exports to nommu.c 2005-09-11 20:43:47 -07:00
oom_kill.c [PATCH] mm: fix-up schedule_timeout() usage 2005-09-10 10:06:37 -07:00
page_alloc.c [PATCH] use add_taint() for setting tainted bit flags 2005-09-13 08:22:29 -07:00
page_io.c
page-writeback.c [PATCH] timer initialization cleanup: DEFINE_TIMER 2005-09-09 14:03:48 -07:00
pdflush.c [PATCH] Cleanup patch for process freezing 2005-06-25 17:10:13 -07:00
prio_tree.c
readahead.c [PATCH] readahead: reset cache_hit earlier 2005-09-07 16:57:25 -07:00
rmap.c [PATCH] mm: cleanup rmap 2005-09-05 00:05:43 -07:00
shmem.c [PATCH] tmpfs: Enable atomic inode security labeling 2005-09-09 13:57:28 -07:00
slab.c [PATCH] Fix slab BUG_ON() triggered by change in array cache size 2005-09-14 12:31:45 -07:00
sparse.c [PATCH] sparsemem extreme: hotplug preparation 2005-09-05 00:05:38 -07:00
swap_state.c [PATCH] mm/swap_state: Fix "nocast type" warnings 2005-09-10 10:06:28 -07:00
swap.c
swapfile.c [PATCH] mm: fix-up schedule_timeout() usage 2005-09-10 10:06:37 -07:00
thrash.c
tiny-shmem.c
truncate.c
vmalloc.c [PATCH] update kfree, vfree, and vunmap kerneldoc 2005-09-09 14:03:43 -07:00
vmscan.c [PATCH] vm: kswapd cleanup: use pgdat 2005-09-13 08:22:28 -07:00