On 2013/3/6 14:22, Tejun Heo wrote:
Hello, Li.
On Wed, Mar 06, 2013 at 11:28:01AM +0800, Li Zefan wrote:
quoted
cgroup_event_wake() is called with hardirq-safe wqh->lock held, so
the nested cgrp->event_list_lock should also be hardirq-safe.
Fortunately I don't think the deadlock can happen in real life.
Lockdep never complained, maybe because it never found wqh->lock was
held in irq context?
Why should wqh->lock be hard-irq-safe? Is it actually grabbed from
irq context?
becase cgroup_event_wake() is a callback to a wait queue, and it's wake_up()
that acquires wqh->lock with irq disabled.
Locks which are grabbed with irq disabled aren't
necessarily irq context locks as that doesn't lead to deadlocks. They
need to be actually grabbed from irq context.
Thanks.