diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/cpuset.c | 8 | ||||
-rw-r--r-- | kernel/fork.c | 4 |
2 files changed, 12 insertions, 0 deletions
diff --git a/kernel/cpuset.c b/kernel/cpuset.c index 9c9b7545c810..f8bc977ccbbe 100644 --- a/kernel/cpuset.c +++ b/kernel/cpuset.c | |||
@@ -2460,11 +2460,19 @@ static int cpuset_spread_node(int *rotor) | |||
2460 | 2460 | ||
2461 | int cpuset_mem_spread_node(void) | 2461 | int cpuset_mem_spread_node(void) |
2462 | { | 2462 | { |
2463 | if (current->cpuset_mem_spread_rotor == NUMA_NO_NODE) | ||
2464 | current->cpuset_mem_spread_rotor = | ||
2465 | node_random(¤t->mems_allowed); | ||
2466 | |||
2463 | return cpuset_spread_node(¤t->cpuset_mem_spread_rotor); | 2467 | return cpuset_spread_node(¤t->cpuset_mem_spread_rotor); |
2464 | } | 2468 | } |
2465 | 2469 | ||
2466 | int cpuset_slab_spread_node(void) | 2470 | int cpuset_slab_spread_node(void) |
2467 | { | 2471 | { |
2472 | if (current->cpuset_slab_spread_rotor == NUMA_NO_NODE) | ||
2473 | current->cpuset_slab_spread_rotor = | ||
2474 | node_random(¤t->mems_allowed); | ||
2475 | |||
2468 | return cpuset_spread_node(¤t->cpuset_slab_spread_rotor); | 2476 | return cpuset_spread_node(¤t->cpuset_slab_spread_rotor); |
2469 | } | 2477 | } |
2470 | 2478 | ||
diff --git a/kernel/fork.c b/kernel/fork.c index 17bf7c8d6511..e33177edb3bf 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
@@ -1173,6 +1173,10 @@ static struct task_struct *copy_process(unsigned long clone_flags, | |||
1173 | } | 1173 | } |
1174 | mpol_fix_fork_child_flag(p); | 1174 | mpol_fix_fork_child_flag(p); |
1175 | #endif | 1175 | #endif |
1176 | #ifdef CONFIG_CPUSETS | ||
1177 | p->cpuset_mem_spread_rotor = NUMA_NO_NODE; | ||
1178 | p->cpuset_slab_spread_rotor = NUMA_NO_NODE; | ||
1179 | #endif | ||
1176 | #ifdef CONFIG_TRACE_IRQFLAGS | 1180 | #ifdef CONFIG_TRACE_IRQFLAGS |
1177 | p->irq_events = 0; | 1181 | p->irq_events = 0; |
1178 | #ifdef __ARCH_WANT_INTERRUPTS_ON_CTXSW | 1182 | #ifdef __ARCH_WANT_INTERRUPTS_ON_CTXSW |