Skip to content

Commit 5348d63

Browse files
Cosmin Ratiukuba-moo
authored andcommitted
net/mlx5e: psp, avoid 'accel' NULL pointer dereference
The 'accel' parameter of mlx5e_txwqe_build_eseg_csum() and the similar 'state' parameter of mlx5e_accel_tx_ids_len() were NULL when called from mlx5i_sq_xmit() and were causing kernel panics from that context. Fix that by passing in a local empty mlx5e_accel_tx_state variable, thus guaranteeing that 'accel' is never NULL. Also remove an unnecessary check from mlx5e_tx_wqe_inline_mode(). Fixes: e5a1861 ("net/mlx5e: Implement PSP Tx data path") Signed-off-by: Cosmin Ratiu <cratiu@nvidia.com> Reviewed-by: Dragos Tatulea <dtatulea@nvidia.com> Signed-off-by: Tariq Toukan <tariqt@nvidia.com> Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com> Link: https://patch.msgid.link/1760511923-890650-1-git-send-email-tariqt@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent d0d3e9c commit 5348d63

1 file changed

Lines changed: 4 additions & 3 deletions

File tree

  • drivers/net/ethernet/mellanox/mlx5/core

drivers/net/ethernet/mellanox/mlx5/core/en_tx.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ mlx5e_tx_wqe_inline_mode(struct mlx5e_txqsq *sq, struct sk_buff *skb,
256256
u8 mode;
257257

258258
#ifdef CONFIG_MLX5_EN_TLS
259-
if (accel && accel->tls.tls_tisn)
259+
if (accel->tls.tls_tisn)
260260
return MLX5_INLINE_MODE_TCP_UDP;
261261
#endif
262262

@@ -982,6 +982,7 @@ void mlx5i_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb,
982982
struct mlx5e_tx_attr attr;
983983
struct mlx5i_tx_wqe *wqe;
984984

985+
struct mlx5e_accel_tx_state accel = {};
985986
struct mlx5_wqe_datagram_seg *datagram;
986987
struct mlx5_wqe_ctrl_seg *cseg;
987988
struct mlx5_wqe_eth_seg *eseg;
@@ -992,7 +993,7 @@ void mlx5i_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb,
992993
int num_dma;
993994
u16 pi;
994995

995-
mlx5e_sq_xmit_prepare(sq, skb, NULL, &attr);
996+
mlx5e_sq_xmit_prepare(sq, skb, &accel, &attr);
996997
mlx5i_sq_calc_wqe_attr(skb, &attr, &wqe_attr);
997998

998999
pi = mlx5e_txqsq_get_next_pi(sq, wqe_attr.num_wqebbs);
@@ -1009,7 +1010,7 @@ void mlx5i_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb,
10091010

10101011
mlx5i_txwqe_build_datagram(av, dqpn, dqkey, datagram);
10111012

1012-
mlx5e_txwqe_build_eseg_csum(sq, skb, NULL, eseg);
1013+
mlx5e_txwqe_build_eseg_csum(sq, skb, &accel, eseg);
10131014

10141015
eseg->mss = attr.mss;
10151016

0 commit comments

Comments
 (0)