linux/include/linux/mlx5
Gal Pressman 11c057d234 net/mlx5: Fix MCIA register buffer overflow on 32 dword reads
The MCIA register can return up to 32 dwords (128 bytes) when the device
advertises the mcia_32dwords capability, but struct
mlx5_ifc_mcia_reg_bits only defines dword_0..11, leaving room for just
12 dwords (48 bytes) of data.

mlx5_query_mcia() clamps the read size to mlx5_mcia_max_bytes() and then
memcpy()s that many bytes out of the register, potentially reading past
the end of the 'out' buffer. On kernels built with FORTIFY_SOURCE this
is caught as a buffer overflow while reading the module EEPROM via
ethtool:

  detected buffer overflow in memcpy
  kernel BUG at lib/string_helpers.c:1048!
  RIP: 0010:fortify_panic+0x13/0x20
  Call Trace:
   mlx5_query_mcia.isra.0+0x200/0x210 [mlx5_core]
   mlx5_query_module_eeprom_by_page+0x4a/0xa0 [mlx5_core]
   mlx5e_get_module_eeprom_by_page+0xbb/0x120 [mlx5_core]
   eeprom_prepare_data+0xf3/0x170
   ethnl_default_doit+0xf1/0x3b0

Extend the mcia_reg layout to 32 dwords.

Fixes: 271907ee2f ("net/mlx5: Query the maximum MCIA register read size from firmware")
Signed-off-by: Gal Pressman <gal@nvidia.com>
Reviewed-by: Alex Lazar <alazar@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Link: https://patch.msgid.link/20260717072338.1240582-1-tariqt@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-07-23 08:19:29 -07:00
..
cq.h mlx5: Fix default values in create CQ 2025-11-11 15:12:18 +01:00
device.h net/mlx5: Expose MLX5_UMR_ALIGN definition 2026-03-16 16:23:00 -04:00
doorbell.h
driver.h net/mlx5: Add SPF function type for page management 2026-05-25 13:48:51 -07:00
eq.h
eswitch.h net/mlx5: E-Switch, serialize representor lifecycle 2026-05-06 19:03:37 -07:00
fs_helpers.h
fs.h {net/RDMA}/mlx5: Add LAG demux table API and vport demux rules 2026-03-16 16:23:00 -04:00
lag.h {net/RDMA}/mlx5: Add LAG demux table API and vport demux rules 2026-03-16 16:23:00 -04:00
macsec.h net/mlx5: Add RoCE MACsec steering infrastructure in core 2023-08-20 12:35:24 +03:00
mlx5_ifc_fpga.h
mlx5_ifc_vdpa.h vdpa/mlx5: Add support for modifying the VQ features field 2024-07-09 08:42:46 -04:00
mlx5_ifc.h net/mlx5: Fix MCIA register buffer overflow on 32 dword reads 2026-07-23 08:19:29 -07:00
mpfs.h
port.h net/mlx5: Fix 1600G link mode enum naming 2026-02-05 18:29:04 -08:00
qp.h RDMA/mlx5: Add support for rate limit in UD and UC QPs 2026-06-11 07:02:05 -04:00
rsc_dump.h
transobj.h
vport.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2026-06-11 14:33:35 -07:00