patch-1.3.77 linux/net/core/datagram.c

Next file: linux/net/core/dev.c
Previous file: linux/net/ax25/ax25_subr.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v1.3.76/linux/net/core/datagram.c linux/net/core/datagram.c
@@ -79,7 +79,7 @@
 
 	lock_sock(sk);
 restart:
-	while(skb_peek(&sk->receive_queue) == NULL)	/* No data */
+	while(skb_queue_empty(&sk->receive_queue))	/* No data */
 	{
 		/* Socket errors? */
 		error = sock_error(sk);
@@ -142,14 +142,12 @@
 	save_flags(flags);
 	cli();
 	skb->users--;
-	if(skb->users>0)
-	{
-		restore_flags(flags);
-		return;
+	if(skb->users <= 0) {
+		/* See if it needs destroying */
+		/* Been dequeued by someone - ie it's read */
+		if(!skb->next && !skb->prev)
+			kfree_skb(skb,FREE_READ);
 	}
-	/* See if it needs destroying */
-	if(!skb->next && !skb->prev)	/* Been dequeued by someone - ie it's read */
-		kfree_skb(skb,FREE_READ);
 	restore_flags(flags);
 	release_sock(sk);
 }

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov with Sam's (original) version
of this