patch-1.3.22 linux/net/unix/af_unix.c

Next file: linux/scripts/Configure
Previous file: linux/net/ipv4/udp.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v1.3.21/linux/net/unix/af_unix.c linux/net/unix/af_unix.c
@@ -524,6 +524,7 @@
 		sk->protinfo.af_unix.other->protinfo.af_unix.locks--;
 		sk->protinfo.af_unix.other=NULL;
 		sock->state=SS_UNCONNECTED;
+		sti();
 		return -ECONNREFUSED;
 	}
 	
@@ -532,6 +533,7 @@
 	 */
 	 
 	sock->state=SS_CONNECTED;
+	sti();
 	return 0;
 	
 }
@@ -722,6 +724,7 @@
 			other->protinfo.af_unix.locks--;
 			sk->protinfo.af_unix.other=NULL;
 			sock->state=SS_UNCONNECTED;
+			sti();
 			return -ECONNRESET;
 		}
 	}
@@ -732,6 +735,7 @@
 		if(other==NULL)
 		{
 			kfree_skb(skb, FREE_WRITE);
+			sti();
 			return err;
 		}
 	}
@@ -790,11 +794,18 @@
 			{
 				up(&sk->protinfo.af_unix.readsem);
 				if(sk->shutdown & RCV_SHUTDOWN)
+				{
+					sti();
 					return copied;
+				}
 				if(copied)
+				{
+					sti();
 					return copied;
+				}
 				if(noblock)
 				{
+					sti();
 					return -EAGAIN;
 				}
 				sk->socket->flags |= SO_WAITDATA;
@@ -845,6 +856,7 @@
 						break;
 				}
 			}
+			sti();
 		}	
 	}	
 	up(&sk->protinfo.af_unix.readsem);

FUNET's LINUX-ADM group, [email protected]
TCL-scripts by Sam Shen, [email protected] with Sam's (original) version
of this