KAMEZAWA Hiroyuki 3fa59dfbc3 cgroup: fix potential deadlock in pre_destroy
As Balbir pointed out, memcg's pre_destroy handler has potential deadlock.

It has following lock sequence.

	cgroup_mutex (cgroup_rmdir)
	    -> pre_destroy -> mem_cgroup_pre_destroy-> force_empty
		-> cpu_hotplug.lock. (lru_add_drain_all->
				      schedule_work->
                                      get_online_cpus)

But, cpuset has following.
	cpu_hotplug.lock (call notifier)
		-> cgroup_mutex. (within notifier)

Then, this lock sequence should be fixed.

Considering how pre_destroy works, it's not necessary to holding
cgroup_mutex() while calling it.

As a side effect, we don't have to wait at this mutex while memcg's
force_empty works.(it can be long when there are tons of pages.)

Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Acked-by: Balbir Singh <balbir@linux.vnet.ibm.com>
Cc: Li Zefan <lizf@cn.fujitsu.com>
Cc: Paul Menage <menage@google.com>
Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-11-19 18:49:58 -08:00
..
2008-10-22 07:37:17 +02:00
2008-10-16 11:21:30 -07:00
2008-03-30 14:18:41 -07:00
2008-09-14 16:25:35 +02:00
2008-07-28 14:37:38 +02:00
2007-07-16 09:05:50 -07:00
2008-08-13 12:55:10 +02:00
2008-10-28 11:19:07 +01:00
2008-09-02 19:21:40 -07:00
2008-10-20 08:52:39 -07:00
2008-10-21 15:59:53 +02:00
2008-11-18 15:08:56 +01:00
2008-11-11 11:57:22 +01:00
2008-11-05 10:30:14 +01:00
2007-07-16 09:05:50 -07:00
2008-11-06 08:41:56 +01:00
2008-10-16 11:21:31 -07:00
2008-02-06 10:41:02 -08:00
2008-11-19 18:49:57 -08:00
2008-07-25 10:53:45 -07:00
2008-10-16 11:21:47 -07:00
2008-10-16 11:21:31 -07:00