You can import this changeset into BK by piping this whole message to:
'| bk receive [path to repository]' or apply the patch as usual.

===================================================================


ChangeSet@1.1421.1.3, 2003-11-11 00:26:48-02:00, acme@conectiva.com.br
  o DECNET: use sk_wait_event primitive


 af_decnet.c |   34 +++++++++-------------------------
 1 files changed, 9 insertions(+), 25 deletions(-)


diff -Nru a/net/decnet/af_decnet.c b/net/decnet/af_decnet.c
--- a/net/decnet/af_decnet.c	Sat Nov 15 17:02:56 2003
+++ b/net/decnet/af_decnet.c	Sat Nov 15 17:02:56 2003
@@ -819,14 +819,10 @@
 	scp->segsize_loc = dst_path_metric(__sk_dst_get(sk), RTAX_ADVMSS);
 	dn_send_conn_conf(sk, allocation);
 
-	prepare_to_wait(sk->sk_sleep, &wait, TASK_INTERRUPTIBLE);
 	for(;;) {
-		release_sock(sk);
-		if (scp->state == DN_CC)
-			*timeo = schedule_timeout(*timeo);
-		lock_sock(sk);
+		prepare_to_wait(sk->sk_sleep, &wait, TASK_INTERRUPTIBLE);
 		err = 0;
-		if (scp->state == DN_RUN)
+		if (sk_wait_event(sk, timeo, scp->state == DN_RUN))
 			break;
 		err = sock_error(sk);
 		if (err)
@@ -837,7 +833,6 @@
 		err = -EAGAIN;
 		if (!*timeo)
 			break;
-		prepare_to_wait(sk->sk_sleep, &wait, TASK_INTERRUPTIBLE);
 	}
 	finish_wait(sk->sk_sleep, &wait);
 	if (err == 0) {
@@ -860,14 +855,10 @@
 	if (!*timeo)
 		return -EALREADY;
 
-	prepare_to_wait(sk->sk_sleep, &wait, TASK_INTERRUPTIBLE);
 	for(;;) {
-		release_sock(sk);
-		if (scp->state == DN_CI || scp->state == DN_CC)
-			*timeo = schedule_timeout(*timeo);
-		lock_sock(sk);
+		prepare_to_wait(sk->sk_sleep, &wait, TASK_INTERRUPTIBLE);
 		err = 0;
-		if (scp->state == DN_RUN)
+		if (sk_wait_event(sk, timeo, scp->state == DN_RUN))
 			break;
 		err = sock_error(sk);
 		if (err)
@@ -878,7 +869,6 @@
 		err = -ETIMEDOUT;
 		if (!*timeo)
 			break;
-		prepare_to_wait(sk->sk_sleep, &wait, TASK_INTERRUPTIBLE);
 	}
 	finish_wait(sk->sk_sleep, &wait);
 out:
@@ -1024,18 +1014,13 @@
 {
 	DEFINE_WAIT(wait);
 	struct sk_buff *skb = NULL;
-	int err = 0;
+	int err;
 
-	prepare_to_wait(sk->sk_sleep, &wait, TASK_INTERRUPTIBLE);
 	for(;;) {
-		release_sock(sk);
-		skb = skb_dequeue(&sk->sk_receive_queue);
-		if (skb == NULL) {
-			*timeo = schedule_timeout(*timeo);
-			skb = skb_dequeue(&sk->sk_receive_queue);
-		}
-		lock_sock(sk);
-		if (skb != NULL)
+		prepare_to_wait(sk->sk_sleep, &wait, TASK_INTERRUPTIBLE);
+		err = 0;
+		if (sk_wait_event(sk, timeo,
+			    (skb = skb_dequeue(&sk->sk_receive_queue)) != NULL))
 			break;
 		err = -EINVAL;
 		if (sk->sk_state != TCP_LISTEN)
@@ -1046,7 +1031,6 @@
 		err = -EAGAIN;
 		if (!*timeo)
 			break;
-		prepare_to_wait(sk->sk_sleep, &wait, TASK_INTERRUPTIBLE);
 	}
 	finish_wait(sk->sk_sleep, &wait);
 

===================================================================


This BitKeeper patch contains the following changesets:
1.1421.1.3
## Wrapped with gzip_uu ##


M'XL( &!XMC\  \65;6_:,!#'7\>?XJ9*5=$@V([S0"JJ=@5MJ(@A"J^12:XC
MHDE88J@FY</O$JINW;I6:R?-L7S)^7+^G?V/<@2+$HO0TE&*[ @^Y:4)K2C/
M,#+)7MM1GMJK@B9F>4X3W76>8K>.[:XVLINAZ4C;LP6CB*DVT1KV6)2A)6SG
MP6.^;3&T9L./B_'%C+%^'R[7.ON"UVB@WV<F+_;Z-B[/M5G?YIEM"IV5*9IF
M[>HAM)*<2[I<X3O<]2KA<>57D8B%T$I@S*4*/,5JM/-?\1]G<00U+H5P5<6%
M(STV &$+)6FP'>!.5PCJP'DHO5 %'2Y#SN')S/!>0(>S#_!OJ[AD$>0P&%Y.
MAO,0=B5"N5G>Z<0L<8^9@6V1I EA(+L"X;B237_L*>O\96.,:\[.7BB!CKH;
M8U0;?;,\W-G1S_7TW*!RE)1^I5V,7,57GN\$-T[<>WKOGDEY?T324[P2/)"B
MD<W3\2]KZ"WH+-9[3,^SG2GM+,DVVJ:7GR7GW"=1^4)5R@_<H!&7X_TF*_Z\
MK'K0D>[_U56S[Y^A4]PUG80R_<,1O$)R@T!*$+51H-@HD#X]6=:VP*TN<&GR
M!NNDW'3."+&\1=RVX;CVM6%^<7VU'$WFP]EL,9V//HR'K=,Z4X]2C [&LI(;
M.'E4'#VUP20IYFTHHRWE-=H@J0<&D^5L,6FU*(?B#93G'(S;L'G!F]E\WK U
MYK5L@:BAZ+.HMVIT;ZV$C@V+XK29Z1TB' %!'>$$Q/\6<,NBU- '?OH"-4U;
M0(U<*XJGD<3Q=8<[/#F^7Z[ "$E9R\;;:L&[/DP6XW%=FN"J)G_X8T1KC#;E
3+NW'O1L=.SUDWP$G.=G3I@8     
 
