diff -urNp 2.5.39-disc-na/include/linux/gfp.h 2.5.39-disc-nac/include/linux/gfp.h --- 2.5.39-disc-na/include/linux/gfp.h Fri Sep 27 23:49:16 2002 +++ 2.5.39-disc-nac/include/linux/gfp.h Tue Oct 8 16:16:04 2002 @@ -51,9 +51,13 @@ extern struct page * alloc_pages_node(in */ static inline struct page * alloc_pages(unsigned int gfp_mask, unsigned int order) { - pg_data_t *pgdat = NODE_DATA(numa_node_id()); + pg_data_t *pgdat; unsigned int idx = (gfp_mask & GFP_ZONEMASK); + if (current->active_mm == &init_mm) + pgdat = NODE_DATA(numa_node_id()); + else + pgdat = NODE_DATA(current->node); if (unlikely(order >= MAX_ORDER)) return NULL;