From: Philippe Elie If drain_array_locked() is passed the `force' command, it must go in and empty the head array. mm/slab.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -puN mm/slab.c~slab-drain_array-fix mm/slab.c --- 25/mm/slab.c~slab-drain_array-fix 2003-08-18 22:27:21.000000000 -0700 +++ 25-akpm/mm/slab.c 2003-08-18 22:27:21.000000000 -0700 @@ -2355,7 +2355,7 @@ static void drain_array_locked(kmem_cach int tofree; check_spinlock_acquired(cachep); - if (ac->touched) { + if (ac->touched && !force) { ac->touched = 0; } else if (ac->avail) { tofree = force ? ac->avail : (ac->limit+4)/5; _