diff --git a/net/core/flow.c b/net/core/flow.c index a618f89..bcbbe2d 100644 --- a/net/core/flow.c +++ b/net/core/flow.c @@ -311,18 +311,13 @@ void flow_cache_flush(void) static void __devinit flow_cache_cpu_prepare(int cpu) { struct tasklet_struct *tasklet; - unsigned long order; - for (order = 0; - (PAGE_SIZE << order) < - (sizeof(struct flow_cache_entry *)*flow_hash_size); - order++) - /* NOTHING */; - - flow_table(cpu) = (struct flow_cache_entry **) - __get_free_pages(GFP_KERNEL|__GFP_ZERO, order); + flow_table(cpu) = kmalloc_node( + sizeof(struct flow_cache_entry *) * flow_hash_size, + GFP_KERNEL | __GFP_ZERO, + cpu_to_node(cpu)); if (!flow_table(cpu)) - panic("NET: failed to allocate flow cache order %lu\n", order); + panic("NET: failed to allocate flow cache for cpu %d\n", cpu); flow_hash_rnd_recalc(cpu) = 1; flow_count(cpu) = 0;