patch-2.4.0-test11 linux/net/x25/x25_dev.c

Next file: linux/net/x25/x25_in.c
Previous file: linux/net/x25/af_x25.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test10/linux/net/x25/x25_dev.c linux/net/x25/x25_dev.c
@@ -68,8 +68,17 @@
 	 *	Find an existing socket.
 	 */
 	if ((sk = x25_find_socket(lci, neigh)) != NULL) {
+		int queued = 1;
+
 		skb->h.raw = skb->data;
-		return x25_process_rx_frame(sk, skb);
+		bh_lock_sock(sk);
+		if (!sk->lock.users) {
+			queued = x25_process_rx_frame(sk, skb);
+		} else {
+			sk_add_backlog(sk, skb);
+		}
+		bh_unlock_sock(sk);
+		return queued;
 	}
 
 	/*

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)