From 2a650601ad9432a29b1379e57741accdcc0917da Mon Sep 17 00:00:00 2001 From: Joonsoo Kim Date: Thu, 17 May 2012 00:13:02 +0900 Subject: [PATCH] --- yaml --- r: 310131 b: refs/heads/master c: 02d7633fa567be7bf55a993b79d2a31b95ce2227 h: refs/heads/master i: 310129: cc6d55379962c8f7edf0f5dcf4d9c06f5ed70624 310127: 8d3cc572b48f82987351cbb074f8bf6de303bde1 v: v3 --- [refs] | 2 +- trunk/mm/slub.c | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index f99d9ed04b01..33d916e74932 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4053497d6a37715f4b20dcc180a52717b4c8ffba +refs/heads/master: 02d7633fa567be7bf55a993b79d2a31b95ce2227 diff --git a/trunk/mm/slub.c b/trunk/mm/slub.c index a20053a89740..b14ea3ce43b2 100644 --- a/trunk/mm/slub.c +++ b/trunk/mm/slub.c @@ -1514,15 +1514,19 @@ static inline void *acquire_slab(struct kmem_cache *s, freelist = page->freelist; counters = page->counters; new.counters = counters; - if (mode) + if (mode) { new.inuse = page->objects; + new.freelist = NULL; + } else { + new.freelist = freelist; + } VM_BUG_ON(new.frozen); new.frozen = 1; } while (!__cmpxchg_double_slab(s, page, freelist, counters, - NULL, new.counters, + new.freelist, new.counters, "lock and freeze")); remove_partial(n, page); @@ -1564,7 +1568,6 @@ static void *get_partial_node(struct kmem_cache *s, object = t; available = page->objects - page->inuse; } else { - page->freelist = t; available = put_cpu_partial(s, page, 0); stat(s, CPU_PARTIAL_NODE); }