diff options
author | David S. Miller <davem@davemloft.net> | 2019-02-22 12:55:32 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-02-22 12:55:32 -0800 |
commit | d29d1c4957d4dde1a7578b10f2a2d1fae39bd47a (patch) | |
tree | b41c5aa5786c702502de08f1560751c51170156e /drivers/net/tap.c | |
parent | 5328b633c9b3c3af38bec8cb70120658c0866e0a (diff) | |
parent | 41f5f63cd17530d9eddaf99a71f5d069afd787d8 (diff) |
Merge branch 'AF_PACKET-transport_offset-fix'
Maxim Mikityanskiy says:
====================
AF_PACKET transport_offset fix
This patch series contains the implementation of the RFC that was posted
on this mailing list previously:
https://www.spinics.net/lists/netdev/msg541709.html
It fixes having incorrect skb->transport_header values in cases when
dissect fails. Having correct values set by the kernel fixes mlx5
operation and allows to remove some unnecessary code flows in mlx5.
v2 changes:
- Rebase against the fresh net-next.
- Don't return bool from skb_probe_transport_header (and don't rename
the function).
- WARN_ON_ONCE and error path in case of GSO without the L4 header.
====================
Acked-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/tap.c')
-rw-r--r-- | drivers/net/tap.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/tap.c b/drivers/net/tap.c index c0b52e48f0e6..2ea9b4976f4a 100644 --- a/drivers/net/tap.c +++ b/drivers/net/tap.c @@ -712,7 +712,7 @@ static ssize_t tap_get_user(struct tap_queue *q, void *msg_control, goto err_kfree; } - skb_probe_transport_header(skb, ETH_HLEN); + skb_probe_transport_header(skb); /* Move network header to the right position for VLAN tagged packets */ if ((skb->protocol == htons(ETH_P_8021Q) || @@ -1187,7 +1187,7 @@ static int tap_get_user_xdp(struct tap_queue *q, struct xdp_buff *xdp) tap = rcu_dereference(q->tap); if (tap) { skb->dev = tap->dev; - skb_probe_transport_header(skb, ETH_HLEN); + skb_probe_transport_header(skb); dev_queue_xmit(skb); } else { kfree_skb(skb); |