|
@@ -1707,18 +1707,19 @@ no_join:
|
|
|
void task_numa_free(struct task_struct *p)
|
|
|
{
|
|
|
struct numa_group *grp = p->numa_group;
|
|
|
- int i;
|
|
|
void *numa_faults = p->numa_faults_memory;
|
|
|
+ unsigned long flags;
|
|
|
+ int i;
|
|
|
|
|
|
if (grp) {
|
|
|
- spin_lock_irq(&grp->lock);
|
|
|
+ spin_lock_irqsave(&grp->lock, flags);
|
|
|
for (i = 0; i < NR_NUMA_HINT_FAULT_STATS * nr_node_ids; i++)
|
|
|
grp->faults[i] -= p->numa_faults_memory[i];
|
|
|
grp->total_faults -= p->total_numa_faults;
|
|
|
|
|
|
list_del(&p->numa_entry);
|
|
|
grp->nr_tasks--;
|
|
|
- spin_unlock_irq(&grp->lock);
|
|
|
+ spin_unlock_irqrestore(&grp->lock, flags);
|
|
|
rcu_assign_pointer(p->numa_group, NULL);
|
|
|
put_numa_group(grp);
|
|
|
}
|