On 4/25/22 12:37 PM, Nikolay Aleksandrov wrote:
We received a report[1] of kernel crashes when Cilium is used in XDP mode with virtio_net after updating to newer kernels. After investigating the reason it turned out that when using mergeable bufs with an XDP program which adjusts xdp.data or xdp.data_meta page_to_buf() calculates the build_skb address wrong because the offset can become less than the headroom so it gets the address of the previous page (-X bytes depending on how lower offset is): page_to_skb: page addr ffff9eb2923e2000 buf ffff9eb2923e1ffc offset 252 headroom 256
[...]
CC: stable@xxxxxxxxxxxxxxx CC: Jason Wang <jasowang@xxxxxxxxxx> CC: Xuan Zhuo <xuanzhuo@xxxxxxxxxxxxxxxxx> CC: Daniel Borkmann <daniel@xxxxxxxxxxxxx> CC: "Michael S. Tsirkin" <mst@xxxxxxxxxx> CC: virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx Fixes: 8fb7da9e9907 ("virtio_net: get build_skb() buf by data ptr") Signed-off-by: Nikolay Aleksandrov <razor@xxxxxxxxxxxxx>
Thanks everyone! Acked-by: Daniel Borkmann <daniel@xxxxxxxxxxxxx>