From: chas williams - CONTRACTOR <redacted>
Date: Tue, 12 Aug 2014 08:12:26 -0400
One should not call blocking primitives inside a wait loop, since both
require task_struct::state to sleep, so the inner will destroy the
outer state.
sigd_enq() will possibly sleep for alloc_skb(). Move sigd_enq() before
prepare_to_wait() to avoid sleeping while waiting interruptibly. You do
not actually need to call sigd_enq() after the initial prepare_to_wait()
because we test the termination condition before calling schedule().
Based on suggestions from Peter Zijlstra.
Signed-off-by: Chas Williams <redacted>
Acked-by: Peter Zijlstra <peterz@infradead.org>
Applied.