Jesper Dangaard Brouer <brouer@xxxxxxxxxx> writes: > 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@xxxxxxxxxx> Acked-by: Toke Høiland-Jørgensen <toke@xxxxxxxxxx>