Messages in this thread | | | Date | Thu, 30 Jul 2009 09:53:42 +0800 | From | Lai Jiangshan <> | Subject | Re: [PATCH] cpusets: fix deadlock with cpu_down()->cpuset_lock() |
| |
Oleg Nesterov wrote: > On 07/29, Oleg Nesterov wrote: >> I strongly believe the bug does exist, but this patch needs the review >> from maintainers. > > Yes... > >> IOW, with this patch migration_call(CPU_DEAD) runs without callback_mutex, >> but kernel/cpuset.c always takes get_online_cpus() before callback_mutex. > > Oh. I'm afraid this is not an option. > > callback_mutex should nest under cgroup_mutex, but cpu hotplu pathes > take cgroup_mutex under cpu_hotplug->lock. Lockdep won't be happy. > > Oleg. >
We have made great effort to remove get_online_cpus() from cgroup_mutex critical region.
We can migrate the owner of callback_mutex in migration_call(CPU_DEAD) at first(and then take callback_mutex and migrate others). It fixes this bug, but it can't help for your "cpu_hotplug: don't play with current->cpus_allowed" patch.
Lai.
| |