Commit 0b7967503dc97864f283a3a06fbe23e041876138
Committed by
David S. Miller
1 parent
76d661586c
Exists in
master
and in
7 other branches
net/veth: Fix packet checksumming
We can't change ip_summed from CHECKSUM_PARTIAL to CHECKSUM_NONE or CHECKSUM_UNNECESSARY because checksum in packet's headers is not valid and will cause invalid checksum when frame is forwarded. Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Signed-off-by: David S. Miller <davem@davemloft.net>
Showing 1 changed file with 3 additions and 1 deletions Side-by-side Diff
drivers/net/veth.c
... | ... | @@ -166,7 +166,9 @@ |
166 | 166 | if (!(rcv->flags & IFF_UP)) |
167 | 167 | goto tx_drop; |
168 | 168 | |
169 | - if (dev->features & NETIF_F_NO_CSUM) | |
169 | + /* don't change ip_summed == CHECKSUM_PARTIAL, as that | |
170 | + will cause bad checksum on forwarded packets */ | |
171 | + if (skb->ip_summed == CHECKSUM_NONE) | |
170 | 172 | skb->ip_summed = rcv_priv->ip_summed; |
171 | 173 | |
172 | 174 | length = skb->len + ETH_HLEN; |