linux/net/ethtool
Jakub Kicinski 0e18268983 ethtool: eeprom: add more safeties to EEPROM Netlink fallback
[ Upstream commit 67cfdd9210 ]

The Netlink fallback path for reading module EEPROM
(fallback_set_params()) validates that offset < eeprom_len,
but does not check that offset + length stays within eeprom_len.
The ioctl equivalent (ethtool_get_any_eeprom() in ioctl.c) has
always enforced both bounds:

  if (eeprom.offset + eeprom.len > total_len)
      return -EINVAL;

This could lead to surprises in both drivers and device FW.
Add the missing offset + length validation to fallback_set_params(),
mirroring the ioctl.

Similarly - ethtool core in general, and ethtool_get_any_eeprom()
in particular tries to zero-init all buffers passed to the drivers
to avoid any extra work of zeroing things out. eeprom_fallback()
uses a plain kmalloc(), change it to zalloc.

Fixes: 96d971e307 ("ethtool: Add fallback to get_module_eeprom from netlink command")
Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
Link: https://patch.msgid.link/20260526153533.2779187-11-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2026-06-19 13:33:24 +02:00
..
bitset.c ethtool: fix ethnl_bitmap32_not_zero() bit interval semantics 2026-06-01 17:35:50 +02:00
bitset.h ethtool: add ethnl_parse_bitset() helper 2020-03-12 15:32:32 -07:00
cabletest.c ethtool: link up ethnl_header_policy as a nested policy 2020-10-06 06:25:55 -07:00
channels.c ethtool: fix the check logic of at least one channel for RX/TX 2021-02-28 11:49:07 -08:00
coalesce.c ethtool: extend coalesce setting uAPI with CQE mode 2021-08-24 07:38:29 -07:00
common.c ethtool: add support to set/get tx copybreak buf size via ethtool 2026-03-04 07:19:36 -05:00
common.h net: ethtool: Export helpers for getting EEPROM info 2021-04-11 16:34:56 -07:00
debug.c ethtool: link up ethnl_header_policy as a nested policy 2020-10-06 06:25:55 -07:00
eee.c ethtool: fix incorrect datatype in set_eee ops 2021-04-06 16:42:25 -07:00
eeprom.c ethtool: eeprom: add more safeties to EEPROM Netlink fallback 2026-06-19 13:33:24 +02:00
features.c ethtool: netlink: Add missing ethnl_ops_begin/complete 2024-01-25 14:52:54 -08:00
fec.c ethtool: add FEC statistics 2021-04-15 17:08:29 -07:00
ioctl.c ethtool: add support to set/get tx copybreak buf size via ethtool 2026-03-04 07:19:36 -05:00
linkinfo.c ethtool: link up ethnl_header_policy as a nested policy 2020-10-06 06:25:55 -07:00
linkmodes.c ethtool: reset #lanes when lanes is omitted 2023-04-13 16:48:20 +02:00
linkstate.c ethtool: netlink: do not return SQI value if link is down 2024-07-18 13:07:38 +02:00
Makefile ethtool: add a new command for getting PHC virtual clocks 2021-07-01 13:08:18 -07:00
netlink.c net: ethtool: Don't call .cleanup_data when prepare_data fails 2025-05-02 07:43:52 +02:00
netlink.h ethtool: add two coalesce attributes for CQE mode 2021-08-24 07:38:28 -07:00
pause.c ethtool: fix ethtool msg len calculation for pause stats 2021-11-18 19:17:06 +01:00
phc_vclocks.c ethtool: add a new command for getting PHC virtual clocks 2021-07-01 13:08:18 -07:00
privflags.c ethtool: link up ethnl_header_policy as a nested policy 2020-10-06 06:25:55 -07:00
rings.c ethtool: link up ethnl_header_policy as a nested policy 2020-10-06 06:25:55 -07:00
stats.c ethtool: stats: Fix a copy-paste error 2021-05-19 11:57:33 -07:00
strset.c ethtool: strset: fix message length calculation 2021-06-14 12:14:24 -07:00
tsinfo.c ethtool: link up ethnl_header_policy as a nested policy 2020-10-06 06:25:55 -07:00
tunnels.c ethtool: link up ethnl_header_policy as a nested policy 2020-10-06 06:25:55 -07:00
wol.c ethtool: link up ethnl_header_policy as a nested policy 2020-10-06 06:25:55 -07:00