linux/net/ethtool
Gal Pressman b62869a81a ethtool: rss: Fix hfunc and input_xfrm parsing on big endian
ETHTOOL_A_RSS_HFUNC and ETHTOOL_A_RSS_INPUT_XFRM are NLA_U32 attributes,
but ethnl_rss_set() and ethnl_rss_create_doit() parse them with
ethnl_update_u8(), which reads a single byte.

On little endian this happens to read the least significant byte and
works as long as the value fits in a byte. On big endian it reads the
most significant byte, so the requested value is parsed incorrectly.

The destination fields in struct ethtool_rxfh_param are u8, so the
attribute can't be read directly with ethnl_update_u32().
Cap the hfunc policy at U8_MAX so an out of range value is rejected
instead of being silently truncated into the u8 field, and add
ethnl_update_u8_u32() to read the full u32 and narrow it into the u8
destination.

Fixes: 82ae67cbc4 ("ethtool: rss: support setting hfunc via Netlink")
Fixes: d3e2c7bab1 ("ethtool: rss: support setting input-xfrm via Netlink")
Fixes: a166ab7816 ("ethtool: rss: support creating contexts via Netlink")
Reviewed-by: Dragos Tatulea <dtatulea@nvidia.com>
Reviewed-by: Nimrod Oren <noren@nvidia.com>
Signed-off-by: Gal Pressman <gal@nvidia.com>
Link: https://patch.msgid.link/20260706055017.3355806-1-gal@nvidia.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2026-07-09 11:38:30 +02:00
..
bitset.c ethtool: fix ethnl_bitmap32_not_zero() bit interval semantics 2026-05-12 18:45:13 -07:00
bitset.h net: ethtool: re-order local includes 2026-03-20 19:10:18 -07:00
cabletest.c net: ethtool: optionally skip rtnl_lock in cable test handlers 2026-06-09 10:13:05 -07:00
channels.c net, ethtool: Disallow leased real rxqs to be resized 2026-04-09 18:21:46 -07:00
cmis_cdb.c net: ethtool: cmis_cdb: hold instance lock for ops locked devices 2026-06-04 14:04:55 -07:00
cmis_fw_update.c net: ethtool: cmis_cdb: hold instance lock for ops locked devices 2026-06-04 14:04:55 -07:00
cmis.h ethtool: cmis: fix u16-to-u8 truncation of msleep_pre_rpl 2026-05-26 08:19:33 -07:00
coalesce.c ethtool: coalesce: cap profile updates at NET_DIM_PARAMS_NUM_PROFILES 2026-05-27 17:42:07 -07:00
common.c tls: remove tls_toe and the related driver 2026-06-12 16:43:10 -07:00
common.h net: ethtool: keep rtnl_lock for ops using ethtool_op_get_link() 2026-06-25 10:18:34 -07:00
debug.c net: ethtool: re-order local includes 2026-03-20 19:10:18 -07:00
eee.c net: ethtool: re-order local includes 2026-03-20 19:10:18 -07:00
eeprom.c ethtool: eeprom: add more safeties to EEPROM Netlink fallback 2026-05-27 17:42:09 -07:00
features.c net: ethtool: re-order local includes 2026-03-20 19:10:18 -07:00
fec.c net: ethtool: re-order local includes 2026-03-20 19:10:18 -07:00
ioctl.c net: ethtool: add KSZ87xx low-loss cable PHY tunables 2026-06-11 15:47:56 -07:00
linkinfo.c net: ethtool: add netif_get_link_ksettings() for correct ops-locked use 2026-06-04 14:04:55 -07:00
linkmodes.c net: ethtool: add netif_get_link_ksettings() for correct ops-locked use 2026-06-04 14:04:55 -07:00
linkstate.c ethtool: linkstate: fix unbalanced ethnl_ops_complete() on PHY lookup error 2026-05-27 17:42:08 -07:00
Makefile ethtool: netlink: add ETHTOOL_MSG_MSE_GET and wire up PHY MSE access 2025-11-03 18:32:27 -08:00
mm.c net: ethtool: optionally skip rtnl_lock on Netlink path for GET ops 2026-06-09 10:13:04 -07:00
module_fw.h ethtool: Add ability to flash transceiver modules' firmware 2024-06-28 10:48:23 +01:00
module.c net: ethtool: optionally skip rtnl_lock in ethnl_act_module_fw_flash() 2026-06-09 10:13:05 -07:00
mse.c net: ethtool: re-order local includes 2026-03-20 19:10:18 -07:00
netlink.c net: ethtool: optionally skip rtnl_lock on Netlink path for SET ops 2026-06-09 10:13:05 -07:00
netlink.h ethtool: rss: Fix hfunc and input_xfrm parsing on big endian 2026-07-09 11:38:30 +02:00
pause.c net: ethtool: pass genl_info to the ethnl parse_request operation 2026-03-24 20:14:29 -07:00
phc_vclocks.c net: ethtool: re-order local includes 2026-03-20 19:10:18 -07:00
phy.c net: ethtool: relax ethnl_req_get_phydev() locking assertion 2026-06-09 10:13:04 -07:00
plca.c net: ethtool: re-order local includes 2026-03-20 19:10:18 -07:00
privflags.c net: ethtool: re-order local includes 2026-03-20 19:10:18 -07:00
pse-pd.c ethtool: pse-pd: fix missing ethnl_ops_complete() 2026-05-27 17:42:08 -07:00
rings.c net: ethtool: fix missing closing paren in rings_reply_size() 2026-05-11 18:42:25 -07:00
rss.c ethtool: rss: Fix hfunc and input_xfrm parsing on big endian 2026-07-09 11:38:30 +02:00
stats.c net: ethtool: pass genl_info to the ethnl parse_request operation 2026-03-24 20:14:29 -07:00
strset.c ethtool: strset: fix header attribute index in ethnl_req_get_phydev() 2026-05-27 17:42:09 -07:00
ts.h net: ethtool: tsinfo: Enhance tsinfo to support several hwtstamp by net topology 2024-12-16 12:51:41 +00:00
tsconfig.c net: ethtool: make dev->hwprov ops-protected 2026-06-09 10:13:04 -07:00
tsinfo.c net: ethtool: optionally skip rtnl_lock in ethnl_tsinfo_dumpit() 2026-06-09 10:13:05 -07:00
tunnels.c genetlink: use attrs from struct genl_info 2023-08-15 15:00:45 -07:00
wol.c net: ethtool: re-order local includes 2026-03-20 19:10:18 -07:00