--- 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)