net: allow IFLA_INET_CONF messages when NLA_F_NESTED unset

Commit fa8fca8871 ("ipv4: validate IPV4_DEVCONF attributes properly")
added validation of IFLA_INET_CONF attributes, and in the process
changed the call of nla_for_each_nested() to nla_parse_nested(). A
side effect of this change is that the IFLA_INET_CONF option is now
tested for NLA_F_NESTED being set, and fails if it is not. Prior to the
commit there was no check of NLA_F_NESTED.

Change nla_parse_nested() to nla_parse(). This restores the previous
functionality of not checking NLA_F_NESTED, thereby allowing code that
(incorrectly) doesn't set NLA_F_NESTED to continue to work.

This issue was identified because keepalived started logging errors when
it was configuring macvlans that it created.

Fixes: fa8fca8871 ("ipv4: validate IPV4_DEVCONF attributes properly")
Signed-off-by: Quentin Armitage <quentin@armitage.org.uk>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Link: https://patch.msgid.link/20260915213320.1527029-2-quentin@armitage.org.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Quentin Armitage 2026-09-15 22:33:21 +01:00 committed by Jakub Kicinski
parent 4581c3d2ad
commit 6c096bb08d

View File

@ -2117,9 +2117,10 @@ static int inet_validate_link_af(const struct net_device *dev,
return err;
if (tb[IFLA_INET_CONF]) {
err = nla_parse_nested(nested_tb, IPV4_DEVCONF_MAX,
tb[IFLA_INET_CONF], inet_devconf_policy,
extack);
err = nla_parse(nested_tb, IPV4_DEVCONF_MAX,
nla_data(tb[IFLA_INET_CONF]),
nla_len(tb[IFLA_INET_CONF]),
inet_devconf_policy, extack);
if (err < 0)
return err;