Hi,
Since per-channel stats were converted to be allocated and published
lazily at first channel open in commit fa691d0c9c08 ("net/mlx5e: Allocate
per-channel stats dynamically at first usage"), priv->channel_stats[]
and priv->stats_nch are filled in incrementally during interface
bring-up. This opened a window in which the various stats readers - most
of them reachable from userspace via netlink/netdev stats queries - can
race with mlx5e_open_channel() on another CPU and observe partially
initialized state. The HV VHCA stats agent, which is created before the
channels are opened, hits related problems of its own.
This series by Feng collects the resulting crashes and fixes them.
Regards,
Tariq
Feng Liu (4):
net/mlx5e: Fix HV VHCA stats zero-sized buffer allocation
net/mlx5e: Fix HV VHCA stats agent registration race
net/mlx5e: Bounds-check stats_nch in mlx5e_get_queue_stats_rx()
net/mlx5e: Fix publication race for priv->channel_stats[]
drivers/net/ethernet/mellanox/mlx5/core/en.h | 12 ++++++
.../mellanox/mlx5/core/en/hv_vhca_stats.c | 38 +++++++++++++------
.../net/ethernet/mellanox/mlx5/core/en_main.c | 15 +++++---
.../ethernet/mellanox/mlx5/core/en_stats.c | 9 +++--
.../ethernet/mellanox/mlx5/core/ipoib/ipoib.c | 3 +-
.../ethernet/mellanox/mlx5/core/lib/hv_vhca.c | 8 +++-
.../ethernet/mellanox/mlx5/core/lib/hv_vhca.h | 6 ++-
7 files changed, 64 insertions(+), 27 deletions(-)
base-commit: c05fa14db43ebef3bd862ca9d073981c0358b3f0
--
2.44.0