X-Git-Url: http://ftp.safe.ca/?a=blobdiff_plain;f=mm%2Fpage_cgroup.c;h=3d535d59482668012bd67c21b18cb59a909e1007;hb=ea637639591def87a54cea811cbac796980cb30d;hp=f22b4ebbd8dc7a94680844ce214c5ff2fd2c1467;hpb=338c843108bf5030d6765f4405126e70f8b77845;p=safe%2Fjmp%2Flinux-2.6 diff --git a/mm/page_cgroup.c b/mm/page_cgroup.c index f22b4eb..3d535d5 100644 --- a/mm/page_cgroup.c +++ b/mm/page_cgroup.c @@ -116,10 +116,16 @@ static int __init_refok init_section_page_cgroup(unsigned long pfn) nid = page_to_nid(pfn_to_page(pfn)); table_size = sizeof(struct page_cgroup) * PAGES_PER_SECTION; VM_BUG_ON(!slab_is_available()); - base = kmalloc_node(table_size, + if (node_state(nid, N_HIGH_MEMORY)) { + base = kmalloc_node(table_size, GFP_KERNEL | __GFP_NOWARN, nid); - if (!base) - base = vmalloc_node(table_size, nid); + if (!base) + base = vmalloc_node(table_size, nid); + } else { + base = kmalloc(table_size, GFP_KERNEL | __GFP_NOWARN); + if (!base) + base = vmalloc(table_size); + } } else { /* * We don't have to allocate page_cgroup again, but