Files
archived-linux/include/linux
Davide Caratti fa4e0f8855 net/sched: fix corrupted L2 header with MPLS 'push' and 'pop' actions
the following script:

 # tc qdisc add dev eth0 clsact
 # tc filter add dev eth0 egress protocol ip matchall \
 > action mpls push protocol mpls_uc label 0x355aa bos 1

causes corruption of all IP packets transmitted by eth0. On TC egress, we
can't rely on the value of skb->mac_len, because it's 0 and a MPLS 'push'
operation will result in an overwrite of the first 4 octets in the packet
L2 header (e.g. the Destination Address if eth0 is an Ethernet); the same
error pattern is present also in the MPLS 'pop' operation. Fix this error
in act_mpls data plane, computing 'mac_len' as the difference between the
network header and the mac header (when not at TC ingress), and use it in
MPLS 'push'/'pop' core functions.

v2: unbreak 'make htmldocs' because of missing documentation of 'mac_len'
    in skb_mpls_pop(), reported by kbuild test robot

CC: Lorenzo Bianconi <lorenzo@kernel.org>
Fixes: 2a2ea50870 ("net: sched: add mpls manipulation actions to TC")
Reviewed-by: Simon Horman <simon.horman@netronome.com>
Acked-by: John Hurley <john.hurley@netronome.com>
Signed-off-by: Davide Caratti <dcaratti@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2019-10-15 17:14:48 -07:00
..
2019-08-09 09:15:05 +02:00
2019-09-17 10:27:46 -07:00
2019-09-16 09:56:27 -07:00
2019-05-31 11:13:10 +02:00
2019-08-20 22:09:52 +02:00
2019-05-14 19:52:50 -07:00
2019-07-01 08:18:54 -06:00
2019-07-25 15:47:37 +02:00
2019-08-28 21:17:12 -06:00
2019-04-09 17:05:46 -07:00
2019-06-12 20:27:13 +02:00
2019-09-05 19:52:33 -06:00
2019-08-05 21:52:53 +02:00
2019-04-22 09:48:12 -06:00
2019-09-05 11:40:54 +02:00
2019-09-24 15:54:08 -07:00
2019-07-05 21:34:50 +02:00
2019-06-26 13:19:46 -07:00
2019-06-10 13:00:24 +02:00
2019-04-08 22:56:14 +02:00
2019-09-07 04:28:05 -03:00
2019-09-02 11:43:54 +01:00
2019-09-05 12:32:05 +02:00
2019-08-14 15:30:35 +02:00
2019-08-08 09:09:25 +02:00
2019-07-08 19:25:19 -07:00
2019-06-13 09:02:33 -04:00
2019-07-26 17:01:29 -06:00
2019-07-16 19:23:25 -07:00
2019-10-04 18:11:08 -07:00
2019-08-01 21:49:46 +02:00
2019-08-21 00:38:54 +02:00
2019-06-12 11:42:13 +02:00
2019-06-15 12:25:49 +02:00
2019-05-14 19:52:48 -07:00
2019-08-23 16:39:26 +01:00
2019-07-31 19:03:35 +02:00
2019-04-02 17:57:35 +02:00
2019-05-08 22:14:36 +02:00
2019-05-31 12:37:46 -07:00
2019-05-16 15:51:55 -07:00
2019-09-25 17:51:41 -07:00
2019-09-07 21:42:25 +02:00
2019-09-04 13:37:17 +02:00
2019-08-30 07:27:17 -07:00
2019-08-01 20:51:22 +02:00
2019-08-20 17:05:05 +02:00
2019-07-31 19:03:35 +02:00
2019-05-15 17:35:54 +01:00