Hi Dave, * David Miller <davem@xxxxxxxxxxxxx> [2010-09-30 17:26:57 -0700]: > From: "Gustavo F. Padovan" <padovan@xxxxxxxxxxxxxx> > Date: Tue, 28 Sep 2010 19:49:41 -0300 > > > Actually sk_stream_wait_memory is another point why it's safe to release > > the lock and block waiting for memory. We've been doing that safely in > > protocols like TCP, SCTP and DCCP for a long time. > > Do you notice what TCP does when sk_stream_wait_memory() returns? > > It reloads all volatile state that might have changed in the socket > while the lock was dropped. > > For example, TCP will reload the current MSS that can change > asynchronously while we don't have the socket lock. I got your point. And what I tried to say in the last e-mail is that ERTM doesn't have such volatile states that need to restore after get the lock back. The others code path it affect are very simple and also doesn't have such problem. So we are safe against asynchronous changes. We obvious have volatiles states, but the code paths where bt_skb_send_alloc() is used doesn't rely on that states. I'm seeing no problem on release the lock, alloc memory, and lock it again. -- Gustavo F. Padovan ProFUSION embedded systems - http://profusion.mobi -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html