--- x/net/tipc/socket.c
+++ y/net/tipc/socket.c
@@ -2488,6 +2488,11 @@ void tipc_sk_rcv(struct net *net, struct
 	struct tipc_sock *tsk;
 	struct sock *sk;
 	struct sk_buff *skb;
+	static int reent = 0;
+
+	if (reent)
+		return;
+	reent++;
 
 	__skb_queue_head_init(&xmitq);
 	while (skb_queue_len(inputq)) {
@@ -2524,6 +2529,7 @@ xmit:
 		dnode = msg_destnode(buf_msg(skb));
 		tipc_node_xmit_skb(net, skb, dnode, dport);
 	}
+	--reent;
 }
 
 static int tipc_wait_for_connect(struct socket *sock, long *timeo_p)