Thread (8 messages) 8 messages, 2 authors, 2018-10-05

Re: [PATCH net 2/2] rxrpc: Fix the data_ready handler

From: Eric Dumazet <hidden>
Date: 2018-10-05 13:52:22
Also in: lkml


On 10/05/2018 06:43 AM, David Howells wrote:
Fix the rxrpc_data_ready() function to pick up all packets and to not miss
any.  There are two problems:
+	for (;;) {
+		skb = skb_recv_udp(udp_sk, 0, 1, &ret);
+		if (!skb) {
+			if (ret == -EAGAIN)
+				return;
+
+			/* If there was a transmission failure, we get an error
+			 * here that we need to ignore.
+			 */
+			_debug("UDP socket error %d", ret);
+			continue;
+		}
+
+		rxrpc_new_skb(skb, rxrpc_skb_rx_received);
+
+		/* we'll probably need to checksum it (didn't call sock_recvmsg) */
+		if (skb_checksum_complete(skb)) {
+			rxrpc_free_skb(skb, rxrpc_skb_rx_freed);
+			__UDP_INC_STATS(sock_net(udp_sk), UDP_MIB_INERRORS, 0);
+			_debug("csum failed");
+			continue;
+		}
+
+		__UDP_INC_STATS(sock_net(udp_sk), UDP_MIB_INDATAGRAMS, 0);
+
+		rxrpc_input_packet(udp_sk, skb);
+	}
+}

This looks a potential infinite loop to me ?

If not, please add a comment explaining why there is no apparent limit.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help