Skip to content

Commit 12fc512

Browse files
Maxim MikityanskiySaeed Mahameed
authored andcommitted
net/mlx5e: Fix use-after-free after xdp_return_frame
xdp_return_frame releases the frame. It leads to releasing the page, so it's not allowed to access xdpi.xdpf->len after that, because xdpi.xdpf is at xdp->data_hard_start after convert_to_xdp_frame. This patch moves the memory access to precede the return of the frame. Fixes: 58b99ee ("net/mlx5e: Add support for XDP_REDIRECT in device-out side") Signed-off-by: Maxim Mikityanskiy <[email protected]> Signed-off-by: Saeed Mahameed <[email protected]>
1 parent 36ad702 commit 12fc512

File tree

1 file changed

+2
-2
lines changed
  • drivers/net/ethernet/mellanox/mlx5/core/en

1 file changed

+2
-2
lines changed

drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -304,9 +304,9 @@ bool mlx5e_poll_xdpsq_cq(struct mlx5e_cq *cq, struct mlx5e_rq *rq)
304304
mlx5e_xdpi_fifo_pop(xdpi_fifo);
305305

306306
if (is_redirect) {
307-
xdp_return_frame(xdpi.xdpf);
308307
dma_unmap_single(sq->pdev, xdpi.dma_addr,
309308
xdpi.xdpf->len, DMA_TO_DEVICE);
309+
xdp_return_frame(xdpi.xdpf);
310310
} else {
311311
/* Recycle RX page */
312312
mlx5e_page_release(rq, &xdpi.di, true);
@@ -345,9 +345,9 @@ void mlx5e_free_xdpsq_descs(struct mlx5e_xdpsq *sq, struct mlx5e_rq *rq)
345345
mlx5e_xdpi_fifo_pop(xdpi_fifo);
346346

347347
if (is_redirect) {
348-
xdp_return_frame(xdpi.xdpf);
349348
dma_unmap_single(sq->pdev, xdpi.dma_addr,
350349
xdpi.xdpf->len, DMA_TO_DEVICE);
350+
xdp_return_frame(xdpi.xdpf);
351351
} else {
352352
/* Recycle RX page */
353353
mlx5e_page_release(rq, &xdpi.di, false);

0 commit comments

Comments
 (0)