瀏覽代碼

SLAB: Fix lockdep annotation breakage

Commit ce79ddc8e2376a9a93c7d42daf89bfcbb9187e62 ("SLAB: Fix lockdep annotations
for CPU hotplug") broke init_node_lock_keys() off-slab logic which causes
lockdep false positives.

Fix that up by reverting the logic back to original while keeping CPU hotplug
fixes intact.

Reported-and-tested-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Reported-and-tested-by: Andi Kleen <andi@firstfloor.org>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Pekka Enberg 15 年之前
父節點
當前提交
00afa75806
共有 1 個文件被更改,包括 2 次插入2 次删除
  1. 2 2
      mm/slab.c

+ 2 - 2
mm/slab.c

@@ -654,7 +654,7 @@ static void init_node_lock_keys(int q)
 
 
 		l3 = s->cs_cachep->nodelists[q];
 		l3 = s->cs_cachep->nodelists[q];
 		if (!l3 || OFF_SLAB(s->cs_cachep))
 		if (!l3 || OFF_SLAB(s->cs_cachep))
-			return;
+			continue;
 		lockdep_set_class(&l3->list_lock, &on_slab_l3_key);
 		lockdep_set_class(&l3->list_lock, &on_slab_l3_key);
 		alc = l3->alien;
 		alc = l3->alien;
 		/*
 		/*
@@ -665,7 +665,7 @@ static void init_node_lock_keys(int q)
 		 * for alloc_alien_cache,
 		 * for alloc_alien_cache,
 		 */
 		 */
 		if (!alc || (unsigned long)alc == BAD_ALIEN_MAGIC)
 		if (!alc || (unsigned long)alc == BAD_ALIEN_MAGIC)
-			return;
+			continue;
 		for_each_node(r) {
 		for_each_node(r) {
 			if (alc[r])
 			if (alc[r])
 				lockdep_set_class(&alc[r]->lock,
 				lockdep_set_class(&alc[r]->lock,