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