From: chas williams - CONTRACTOR Date: Tue, 12 Aug 2014 12:12:26 +0000 (-0400) Subject: atm/svc: Fix blocking in wait loop X-Git-Tag: omap-for-v3.17/fixes-against-rc2~59^2~27 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=de713b57947a7a1b9cc605c0296ee14065cd86b6;p=pandora-kernel.git atm/svc: Fix blocking in wait loop 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 Acked-by: Peter Zijlstra Signed-off-by: David S. Miller --- Reading git-diff-tree failed