]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net: ethtool: avoid OOB accesses in PAUSE_SET
authorJakub Kicinski <kuba@kernel.org>
Thu, 26 Jun 2025 23:39:26 +0000 (16:39 -0700)
committerJakub Kicinski <kuba@kernel.org>
Mon, 30 Jun 2025 15:32:37 +0000 (08:32 -0700)
We now reuse .parse_request() from GET on SET, so we need to make sure
that the policies for both cover the attributes used for .parse_request().
genetlink will only allocate space in info->attrs for ARRAY_SIZE(policy).

Reported-by: syzbot+430f9f76633641a62217@syzkaller.appspotmail.com
Fixes: 963781bdfe20 ("net: ethtool: call .parse_request for SET handlers")
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Tested-by: Ido Schimmel <idosch@nvidia.com>
Link: https://patch.msgid.link/20250626233926.199801-1-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ethtool/netlink.h
net/ethtool/pause.c

index 373a8d5e86ae0cdfdfad043dbb0e15c1d75e3dd4..94a7eb4020229ef578d61932e452707a3c328d49 100644 (file)
@@ -467,7 +467,7 @@ extern const struct nla_policy ethnl_channels_set_policy[ETHTOOL_A_CHANNELS_COMB
 extern const struct nla_policy ethnl_coalesce_get_policy[ETHTOOL_A_COALESCE_HEADER + 1];
 extern const struct nla_policy ethnl_coalesce_set_policy[ETHTOOL_A_COALESCE_MAX + 1];
 extern const struct nla_policy ethnl_pause_get_policy[ETHTOOL_A_PAUSE_STATS_SRC + 1];
-extern const struct nla_policy ethnl_pause_set_policy[ETHTOOL_A_PAUSE_TX + 1];
+extern const struct nla_policy ethnl_pause_set_policy[ETHTOOL_A_PAUSE_STATS_SRC + 1];
 extern const struct nla_policy ethnl_eee_get_policy[ETHTOOL_A_EEE_HEADER + 1];
 extern const struct nla_policy ethnl_eee_set_policy[ETHTOOL_A_EEE_TX_LPI_TIMER + 1];
 extern const struct nla_policy ethnl_tsinfo_get_policy[ETHTOOL_A_TSINFO_MAX + 1];
index f7c847aeb1a29a54b9918920e1ee08b05c88b56f..0f9af1e6654842cbdbfd49983dc2956e68e201cb 100644 (file)
@@ -168,6 +168,7 @@ const struct nla_policy ethnl_pause_set_policy[] = {
        [ETHTOOL_A_PAUSE_AUTONEG]               = { .type = NLA_U8 },
        [ETHTOOL_A_PAUSE_RX]                    = { .type = NLA_U8 },
        [ETHTOOL_A_PAUSE_TX]                    = { .type = NLA_U8 },
+       [ETHTOOL_A_PAUSE_STATS_SRC]             = { .type = NLA_REJECT },
 };
 
 static int