Commit 0b7967503dc97864f283a3a06fbe23e041876138

Authored by Michał Mirosław
Committed by David S. Miller
1 parent 76d661586c

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

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