Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'for-3.14-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup

Pull cgroup fixes from Tejun Heo:
"Two cpuset locking fixes from Li. Both tagged for -stable"

* 'for-3.14-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:
cpuset: fix a race condition in __cpuset_node_allowed_softwall()
cpuset: fix a locking issue in cpuset_migrate_mm()

+3 -7
+3 -7
kernel/cpuset.c
··· 974 974 * Temporarilly set tasks mems_allowed to target nodes of migration, 975 975 * so that the migration code can allocate pages on these nodes. 976 976 * 977 - * Call holding cpuset_mutex, so current's cpuset won't change 978 - * during this call, as manage_mutex holds off any cpuset_attach() 979 - * calls. Therefore we don't need to take task_lock around the 980 - * call to guarantee_online_mems(), as we know no one is changing 981 - * our task's cpuset. 982 - * 983 977 * While the mm_struct we are migrating is typically from some 984 978 * other task, the task_struct mems_allowed that we are hacking 985 979 * is for our current task, which must allocate new pages for that ··· 990 996 991 997 do_migrate_pages(mm, from, to, MPOL_MF_MOVE_ALL); 992 998 999 + rcu_read_lock(); 993 1000 mems_cs = effective_nodemask_cpuset(task_cs(tsk)); 994 1001 guarantee_online_mems(mems_cs, &tsk->mems_allowed); 1002 + rcu_read_unlock(); 995 1003 } 996 1004 997 1005 /* ··· 2482 2486 2483 2487 task_lock(current); 2484 2488 cs = nearest_hardwall_ancestor(task_cs(current)); 2489 + allowed = node_isset(node, cs->mems_allowed); 2485 2490 task_unlock(current); 2486 2491 2487 - allowed = node_isset(node, cs->mems_allowed); 2488 2492 mutex_unlock(&callback_mutex); 2489 2493 return allowed; 2490 2494 }