[PATCH] boot_pageset must not be freed.
authorChristoph Lameter <clameter@engr.sgi.com>
Thu, 23 Jun 2005 03:26:07 +0000 (20:26 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Thu, 23 Jun 2005 03:42:32 +0000 (20:42 -0700)
The boot_pageset needs to be preserved for hotplugging and for off line
processors and nodes. Otherwise pointers will point into memory that has
now a different use. /proc/zoneinfo is currently showing strange results
if processors / nodes are not present.

Signed-off-by: Christoph Lameter <clameter@sgi.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
mm/page_alloc.c

index 206920796f5f68cb176afa138238bd3584106a5a..559336de968713921d5265587604c9f1240be8ef 100644 (file)
@@ -1742,10 +1742,17 @@ inline void setup_pageset(struct per_cpu_pageset *p, unsigned long batch)
  * with interrupts disabled.
  *
  * Some NUMA counter updates may also be caught by the boot pagesets.
- * These will be discarded when bootup is complete.
+ *
+ * The boot_pagesets must be kept even after bootup is complete for
+ * unused processors and/or zones. They do play a role for bootstrapping
+ * hotplugged processors.
+ *
+ * zoneinfo_show() and maybe other functions do
+ * not check if the processor is online before following the pageset pointer.
+ * Other parts of the kernel may not check if the zone is available.
  */
 static struct per_cpu_pageset
-       boot_pageset[NR_CPUS] __initdata;
+       boot_pageset[NR_CPUS];
 
 /*
  * Dynamically allocate memory for the