|
@@ -4049,13 +4049,14 @@ long sched_setaffinity(pid_t pid, const struct cpumask *in_mask)
|
|
|
* root_domain.
|
|
|
*/
|
|
|
#ifdef CONFIG_SMP
|
|
|
- if (task_has_dl_policy(p)) {
|
|
|
- const struct cpumask *span = task_rq(p)->rd->span;
|
|
|
-
|
|
|
- if (dl_bandwidth_enabled() && !cpumask_subset(span, new_mask)) {
|
|
|
+ if (task_has_dl_policy(p) && dl_bandwidth_enabled()) {
|
|
|
+ rcu_read_lock();
|
|
|
+ if (!cpumask_subset(task_rq(p)->rd->span, new_mask)) {
|
|
|
retval = -EBUSY;
|
|
|
+ rcu_read_unlock();
|
|
|
goto out_free_new_mask;
|
|
|
}
|
|
|
+ rcu_read_unlock();
|
|
|
}
|
|
|
#endif
|
|
|
again:
|