From: Jon Maloy <jon.ma...@ericsson.com> Date: Fri, 17 Jun 2016 06:35:57 -0400
> We sometimes observe a 'deadly embrace' type deadlock occurring > between mutually connected sockets on the same node. This happens > when the one-hour peer supervision timers happen to expire > simultaneously in both sockets. > > The scenario is as follows: ... > Further analysis reveals that there are three different locations in the > socket code where tipc_sk_respond() is called within the context of the > socket lock, with ensuing risk of similar deadlocks. > > We now solve this by passing a buffer queue along with all upcalls where > sk_lock.slock may potentially be held. Response or rejected message > buffers are accumulated into this queue instead of being sent out > directly, and only sent once we know we are safely outside the slock > context. > > Reported-by: GUNA <gbala...@gmail.com> > Acked-by: Ying Xue <ying....@windriver.com> > Signed-off-by: Jon Maloy <jon.ma...@ericsson.com> Applied, thanks Jon.