Re: [PATCH v5 4/5] cpusets: Update tasks' cpus_allowed mask uponupdates to root cpuset

From: Peter Zijlstra
Date: Thu May 24 2012 - 05:13:51 EST


On Thu, 2012-05-17 at 22:33 +0530, Srivatsa S. Bhat wrote:
> + /*
> + * Restore only the top_cpuset because it has to track
> + * cpu_active_mask always.
> + * (We don't need to do anything if we come here during resume
> + * from suspend, since top_cpuset.cpus_allowed will already be
> + * equal to cpu_active_mask.)
> + */
> + if (root == &top_cpuset && !cpumask_equal(root->cpus_allowed,
> + cpu_active_mask)) {
> + mutex_lock(&callback_mutex);
> + cpumask_copy(root->cpus_allowed, cpu_active_mask);
> + mutex_unlock(&callback_mutex);
> + update_tasks_cpumask(root, NULL);
> + }

This looks absolutely broken.

Suppose I set an explicit cpu affinity mask on my task, which per not
using cpusets is in the root group.

If I then do a hotplug cycle, I'll find my affinity mask is lost.



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/