Przeglądaj źródła

[NET]: Fix UDP checksum issue in net poll mode.

In net poll mode, the current checksum function doesn't consider the
kind of packet which is padded to reach a specific minimum length. I
believe that's the problem causing my test case failed. The following
patch fixed this issue.

Signed-off-by: Aubrey.Li <aubreylee@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Aubrey.Li 18 lat temu
rodzic
commit
5e7d7fa573
1 zmienionych plików z 7 dodań i 0 usunięć
  1. 7 0
      net/core/netpoll.c

+ 7 - 0
net/core/netpoll.c

@@ -471,6 +471,13 @@ int __netpoll_rx(struct sk_buff *skb)
 	if (skb->len < len || len < iph->ihl*4)
 	if (skb->len < len || len < iph->ihl*4)
 		goto out;
 		goto out;
 
 
+	/*
+	 * Our transport medium may have padded the buffer out.
+	 * Now We trim to the true length of the frame.
+	 */
+	if (pskb_trim_rcsum(skb, len))
+		goto out;
+
 	if (iph->protocol != IPPROTO_UDP)
 	if (iph->protocol != IPPROTO_UDP)
 		goto out;
 		goto out;