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.1422.1.11, 2003-11-13 04:30:53-02:00, acme@conectiva.com.br
  o BLUETOOTH: use sk_wait_error


 af_bluetooth.c |   16 ++--------------
 l2cap.c        |   18 ++++++------------
 rfcomm/sock.c  |   30 ++++++++++--------------------
 sco.c          |   18 ++++++------------
 4 files changed, 24 insertions(+), 58 deletions(-)


diff -Nru a/net/bluetooth/af_bluetooth.c b/net/bluetooth/af_bluetooth.c
--- a/net/bluetooth/af_bluetooth.c	Sat Nov 15 17:01:22 2003
+++ b/net/bluetooth/af_bluetooth.c	Sat Nov 15 17:01:22 2003
@@ -281,21 +281,9 @@
 		prepare_to_wait(sk->sk_sleep, &wait, TASK_INTERRUPTIBLE);
 		if (sk_wait_event(sk, &timeo, sk->sk_state == state))
 			break;
-
-		if (!timeo) {
-			err = -EAGAIN;
+		err = sk_wait_error(sk, timeo);
+		if (err)
 			break;
-		}
-
-		if (signal_pending(current)) {
-			err = sock_intr_errno(timeo);
-			break;
-		}
-
-		if (sk->sk_err) {
-			err = sock_error(sk);
-			break;
-		}
 	}
 	finish_wait(sk->sk_sleep, &wait);
 	return err;
diff -Nru a/net/bluetooth/l2cap.c b/net/bluetooth/l2cap.c
--- a/net/bluetooth/l2cap.c	Sat Nov 15 17:01:22 2003
+++ b/net/bluetooth/l2cap.c	Sat Nov 15 17:01:22 2003
@@ -568,7 +568,7 @@
 	DEFINE_WAIT(wait);
 	struct sock *sk = sock->sk, *nsk;
 	long timeo;
-	int err = 0;
+	int err;
 
 	lock_sock(sk);
 
@@ -585,24 +585,18 @@
 	while (1) {
 		prepare_to_wait_exclusive(sk->sk_sleep, &wait,
 					  TASK_INTERRUPTIBLE);
+		err = 0;
 		if (sk_wait_event(sk, &timeo,
 				(nsk = bt_accept_dequeue(sk, newsock)) != NULL))
 			break;
 
-		if (!timeo) {
-			err = -EAGAIN;
+		err = sk_wait_error(sk, timeo);
+		if (err)
 			break;
-		}
 
-		if (sk->sk_state != BT_LISTEN) {
-			err = -EBADFD;
-			break;
-		}
-
-		if (signal_pending(current)) {
-			err = sock_intr_errno(timeo);
+		err = -EBADFD;
+		if (sk->sk_state != BT_LISTEN)
 			break;
-		}
 	}
 	finish_wait(sk->sk_sleep, &wait);
 
diff -Nru a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c
--- a/net/bluetooth/rfcomm/sock.c	Sat Nov 15 17:01:22 2003
+++ b/net/bluetooth/rfcomm/sock.c	Sat Nov 15 17:01:22 2003
@@ -412,7 +412,7 @@
 	DEFINE_WAIT(wait);
 	struct sock *sk = sock->sk, *nsk;
 	long timeo;
-	int err = 0;
+	int err;
 
 	lock_sock(sk);
 
@@ -429,23 +429,16 @@
 	while (1) {
 		prepare_to_wait_exclusive(sk->sk_sleep, &wait,
 					  TASK_INTERRUPTIBLE);
+		err = 0;
 		if (sk_wait_event(sk, &timeo,
 				(nsk = bt_accept_dequeue(sk, newsock)) != NULL))
 			break;
-		if (!timeo) {
-			err = -EAGAIN;
-			break;
-		}
-
-		if (sk->sk_state != BT_LISTEN) {
-			err = -EBADFD;
+		err = sk_wait_error(sk, timeo);
+		if (err)
 			break;
-		}
-
-		if (signal_pending(current)) {
-			err = sock_intr_errno(timeo);
+		err = -EBADFD;
+		if (sk->sk_state != BT_LISTEN)
 			break;
-		}
 	}
 	finish_wait(sk->sk_sleep, &wait);
 
@@ -541,7 +534,7 @@
 				  sk->sk_err ||
 				  (sk->sk_shutdown & RCV_SHUTDOWN)))
 			break;
-		if (signal_pending(current) || !timeo)
+		if (__sk_wait_error(timeo))
 			break;
 		clear_bit(SOCK_ASYNC_WAITDATA, &sk->sk_socket->flags);
 	}
@@ -588,11 +581,9 @@
 				break;
 
 			timeo = rfcomm_sock_data_wait(sk, timeo);
-
-			if (signal_pending(current)) {
-				err = sock_intr_errno(timeo);
-				goto out;
-			}
+			err = __sk_wait_error(timeo);
+			if (err)
+				break;
 			continue;
 		}
 
@@ -623,7 +614,6 @@
 		}
 	} while (size);
 
-out:
 	if (atomic_read(&sk->sk_rmem_alloc) <= (sk->sk_rcvbuf >> 2))
 		rfcomm_dlc_unthrottle(rfcomm_pi(sk)->dlc);
 
diff -Nru a/net/bluetooth/sco.c b/net/bluetooth/sco.c
--- a/net/bluetooth/sco.c	Sat Nov 15 17:01:22 2003
+++ b/net/bluetooth/sco.c	Sat Nov 15 17:01:22 2003
@@ -561,7 +561,7 @@
 	DEFINE_WAIT(wait);
 	struct sock *sk = sock->sk, *ch;
 	long timeo;
-	int err = 0;
+	int err;
 
 	lock_sock(sk);
 
@@ -578,24 +578,18 @@
 	while (1) {
 		prepare_to_wait_exclusive(sk->sk_sleep, &wait,
 					  TASK_INTERRUPTIBLE);
+		err = 0;
 		if (sk_wait_event(sk, &timeo,
 				(ch = bt_accept_dequeue(sk, newsock)) != NULL))
 			break;
 
-		if (!timeo) {
-			err = -EAGAIN;
+		err = sk_wait_error(sk, timeo);
+		if (err)
 			break;
-		}
 
-		if (sk->sk_state != BT_LISTEN) {
-			err = -EBADFD;
-			break;
-		}
-
-		if (signal_pending(current)) {
-			err = sock_intr_errno(timeo);
+		err = -EBADFD;
+		if (sk->sk_state != BT_LISTEN)
 			break;
-		}
 	}
 	finish_wait(sk->sk_sleep, &wait);
 

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


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


M'XL(  -XMC\  \6776_B.!2&K\FO\&IN6NV2V,<?2:BH.ATZ,]56VZK37B/'
MF 'QD4Z2=F:E_/@]3H I-$6 NBJ@&F+[Y+7]G/>D'\A];K-.2YN9]3Z0KVE>
M=%HFG5M3C)^T;]*9GV38<9NFV!&,TID-W-@@F4 PMT4;?.4S#T?<Z,*,R)/-
M\DZ+^7QUI?CWP79:MQ=?[J\^WGI>MTL^C?3\N_UF"]+M>D6:/>GI(#_3Q6B:
MSOTBT_-\9HOJWN5J: F4 KXE"SF5JF2*BK T;,"8%LP.*(A("<]).]N4OQZ%
M,\8X51!!7#*A&/5ZA/E, /C8,$)YP%C .*&BPVE'\C:%#J6D,33Y4Y V]<[)
MVR[CDV=(2LZO[B_NKJ_OOG;(8VY)/NG_U..B;[,LS;R_"8H'\&Y^;Z?7WO/E
M>513[Y3,]*_)V8]'/46MLTHPGFR03!]M@<<^"G*3^J:6+BD'8)2JDH/@JDR,
MIF8P!&NLE$/SRC:]%F]Q%IP*44H*7"[%/(T?;.8?S3'.\<;D;.A4!GEJ)@M1
M*$=B+"&@I%* *L$F4BH(]4!3[+ [B7H1][DX$85X+*?DP2'=?,;KT?2PO_JQ
MW#MW[!&77)0LC#F47 VH!J983)6V<;*3S)>!G^L$&4NYC\XI&/W0-VEF&U1&
M O\FH8F3D.N$<FXTA#NIK,(VR.-*BLH#&H!P;O"&)+[B!5M(Q*, BA!)B3HK
M5P"Y:0=";+<#1=H,WL</Z@2Z)NWL9_7!_+YIVN<#;*(GE2#,NZR;UGA>$+SK
M"5Z(J+O0PE^D2^@)CHPD =>AL%EVK$D]RB=_D6(\L^GQ"8X8#\D17C]V4R,,
MUI,Q)2%&B)]':%^<?^Q][BTGY)/V*0;-"UU8\D>7G-_UKRZ_W5W\X\+$+LQ+
MR-82? 7;VSK-3M U.LT*OC 2K(8OW!<^1DD;WJD:U0ZYE;ZU=1]"H6#245@W
MSR@4G&U0*+AT# G!]J90"$Z$FWH@?D+4%(LZ8ZJFGM7OKRNH[UX1RXATQ$O"
M<>SBGLW#G83?:O%[*\FLGN":%:A&[M<KA@/_?ZUB.Z5 <Q5;Y@"7(/F!.0!H
MP.)]4J NOEM38'W=A^0 1 (AN80#_!6<OS81LJC6>Z&Q_X/#3F!L/#@LB<#E
MXM8Z(OC>1+QC2:Z?=[82L5CP044Y9)7%5,U:40XWBW(,55&.^?Y%.99U40Z=
DH2K*#W-%15V8U3^%9F3-)'^<=0<L3M@PC+W_ *F\[,Z)#@  
 
