瀏覽代碼

[PATCH] do not free non slab allocated per_cpu_pageset

Stops panic associated with attempting to free a non slab-allocated
per_cpu_pageset.

Signed-off-by: David Rientjes <rientjes@cs.washington.edu>
Acked-by: Christoph Lameter <clameter@sgi.com>
Cc: <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
David Rientjes 19 年之前
父節點
當前提交
f3ef9ead31
共有 1 個文件被更改,包括 3 次插入1 次删除
  1. 3 1
      mm/page_alloc.c

+ 3 - 1
mm/page_alloc.c

@@ -1845,8 +1845,10 @@ static inline void free_zone_pagesets(int cpu)
 	for_each_zone(zone) {
 	for_each_zone(zone) {
 		struct per_cpu_pageset *pset = zone_pcp(zone, cpu);
 		struct per_cpu_pageset *pset = zone_pcp(zone, cpu);
 
 
+		/* Free per_cpu_pageset if it is slab allocated */
+		if (pset != &boot_pageset[cpu])
+			kfree(pset);
 		zone_pcp(zone, cpu) = NULL;
 		zone_pcp(zone, cpu) = NULL;
-		kfree(pset);
 	}
 	}
 }
 }