Jesper Dangaard Brouer
34cc0b338a
xdp: Xdp_frame add member frame_sz and handle in convert_to_xdp_frame
...
Use hole in struct xdp_frame, when adding member frame_sz, which keeps
same sizeof struct (32 bytes)
Drivers ixgbe and sfc had bug cases where the necessary/expected
tailroom was not reserved. This can lead to some hard to catch memory
corruption issues. Having the drivers frame_sz this can be detected when
packet length/end via xdp->data_end exceed the xdp_data_hard_end
pointer, which accounts for the reserved the tailroom.
When detecting this driver issue, simply fail the conversion with NULL,
which results in feedback to driver (failing xdp_do_redirect()) causing
driver to drop packet. Given the lack of consistent XDP stats, this can
be hard to troubleshoot. And given this is a driver bug, we want to
generate some more noise in form of a WARN stack dump (to ID the driver
code that inlined convert_to_xdp_frame).
Inlining the WARN macro is problematic, because it adds an asm
instruction (on Intel CPUs ud2) what influence instruction cache
prefetching. Thus, introduce xdp_warn and macro XDP_WARN, to avoid this
and at the same time make identifying the function and line of this
inlined function easier.
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
Signed-off-by: Alexei Starovoitov <ast@kernel.org >
Acked-by: Toke Høiland-Jørgensen <toke@redhat.com >
Link: https://lore.kernel.org/bpf/158945337313.97035.10015729316710496600.stgit@firesoul
2020-05-14 21:21:54 -07:00
..
2020-03-27 09:29:57 +00:00
2020-05-13 09:12:04 +02:00
2019-05-30 11:29:22 -07:00
2020-04-27 22:20:09 +02:00
2020-04-30 13:24:01 -07:00
2020-02-27 12:06:20 -08:00
2019-06-05 17:37:07 +02:00
2020-02-29 21:52:19 -08:00
2020-05-01 16:08:19 -07:00
2020-02-28 14:51:30 +01:00
2020-03-30 11:06:49 -07:00
2020-04-23 12:29:21 -07:00
2019-05-30 11:26:41 -07:00
2020-03-13 23:04:35 +00:00
2020-02-28 12:12:53 -08:00
2019-12-11 15:01:23 -08:00
2019-11-06 16:14:48 -08:00
2019-01-23 11:18:00 -08:00
2019-06-19 17:09:55 +02:00
2020-02-24 13:31:42 -08:00
2019-05-24 17:37:53 +02:00
2020-05-01 12:15:37 -07:00
2019-07-04 12:30:48 -07:00
2020-05-09 01:05:30 -07:00
2020-02-27 18:50:19 -08:00
2019-10-30 17:34:35 -07:00
2019-05-21 11:28:45 +02:00
2019-06-19 17:09:55 +02:00
2020-04-30 12:56:37 -07:00
2020-02-29 14:39:08 +01:00
2019-05-30 11:26:32 -07:00
2019-05-21 11:28:45 +02:00
2020-03-27 19:40:38 -07:00
2020-03-10 09:12:49 -06:00
2019-05-30 11:29:52 -07:00
2019-05-30 11:29:52 -07:00
2020-03-30 17:54:58 -07:00
2020-02-29 21:52:20 -08:00
2019-05-21 11:52:39 +02:00
2019-05-21 11:52:39 +02:00
2020-03-31 17:29:33 -07:00
2020-05-12 13:08:07 -07:00
2019-12-16 16:09:44 -08:00
2020-05-08 21:33:33 -07:00
2020-03-23 21:57:44 -07:00
2020-05-05 13:23:29 -07:00
2020-02-19 13:52:32 +01:00
2019-12-09 09:59:07 +01:00
2019-06-19 17:09:55 +02:00
2019-12-24 22:37:30 -08:00
2020-03-03 13:28:48 -08:00
2020-02-17 21:33:28 -08:00
2020-05-06 22:10:13 -07:00
2019-02-27 12:50:17 -08:00
2019-11-08 09:11:49 +01:00
2019-10-23 20:13:22 -07:00
2019-12-09 10:36:44 -08:00
2019-11-05 18:20:55 -08:00
2019-10-06 15:44:47 +02:00
2019-03-22 12:09:31 -07:00
2018-12-10 15:53:04 -08:00
2019-07-01 10:58:23 -07:00
2019-10-25 16:24:32 -07:00
2020-02-13 14:19:00 -08:00
2019-02-22 12:56:24 -08:00
2019-05-30 11:26:41 -07:00
2020-05-11 13:18:54 -07:00
2019-04-22 21:50:53 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2020-03-30 13:45:04 -07:00
2020-05-09 00:48:20 +02:00
2020-03-09 22:34:58 +01:00
2020-04-30 20:32:15 -07:00
2019-08-08 15:55:10 -07:00
2020-03-30 13:45:04 -07:00
2020-03-02 11:16:28 -08:00
2019-09-27 12:05:02 +02:00
2019-02-08 21:50:15 -08:00
2020-02-19 11:20:59 -08:00
2020-05-14 20:31:21 -07:00
2020-04-28 12:50:37 -07:00
2019-06-18 20:48:45 -04:00
2020-03-29 22:30:57 -07:00
2019-12-09 10:36:44 -08:00
2019-11-02 13:54:56 -07:00
2019-12-07 11:55:11 -08:00
2019-06-19 11:37:47 -04:00
2020-05-09 00:48:20 +02:00
2020-04-24 16:58:34 -07:00
2020-02-05 14:28:09 +01:00
2019-06-19 17:09:55 +02:00
2019-05-30 11:26:32 -07:00
2019-10-08 13:23:05 -07:00
2020-03-29 22:30:57 -07:00
2020-04-24 11:30:13 +02:00
2019-05-30 11:26:41 -07:00
2020-03-26 20:17:36 -07:00
2020-03-02 11:16:27 -08:00
2020-02-29 21:52:20 -08:00
2020-02-28 12:08:37 -08:00
2019-06-05 17:36:38 +02:00
2020-05-06 22:10:13 -07:00
2019-12-09 10:36:44 -08:00
2020-04-22 12:15:07 -07:00
2020-02-29 21:52:20 -08:00
2020-05-01 12:46:30 -07:00
2019-05-21 11:28:45 +02:00
2020-04-30 17:51:42 -07:00
2019-11-12 08:18:03 -08:00
2019-04-11 13:59:49 -07:00
2020-02-29 21:52:20 -08:00
2020-02-20 10:09:25 -08:00
2020-03-04 13:25:55 -08:00
2019-05-30 11:26:32 -07:00
2020-03-30 11:06:49 -07:00
2020-03-17 21:16:34 -07:00
2019-05-30 11:26:32 -07:00
2019-09-16 09:18:03 +02:00
2019-05-30 11:26:32 -07:00
2020-03-14 21:03:46 -07:00
2019-10-09 21:34:31 -07:00
2020-03-23 21:57:44 -07:00
2020-03-29 22:30:57 -07:00
2018-11-06 15:00:45 -08:00
2019-04-22 21:47:25 -07:00
2020-05-06 22:10:13 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-11-15 12:28:28 -08:00
2019-10-05 16:29:00 -07:00
2020-02-29 21:52:19 -08:00
2020-04-07 18:09:30 -07:00
2019-06-19 17:09:55 +02:00
2020-04-27 11:40:25 -07:00
2019-05-30 11:26:32 -07:00
2020-05-06 17:29:38 -07:00
2019-05-30 11:26:32 -07:00
2019-10-04 14:07:07 -07:00
2019-12-19 17:46:51 -08:00
2019-03-29 10:53:45 -07:00
2020-03-09 22:34:58 +01:00
2019-11-14 18:12:17 -08:00
2019-10-24 14:53:49 -07:00
2019-06-05 17:30:29 +02:00
2019-12-09 10:28:43 -08:00
2019-11-16 12:39:10 -08:00
2020-05-04 22:56:26 +02:00
2020-05-14 21:21:54 -07:00
2019-12-09 09:59:07 +01:00