net: ethtool: fix leaking netdev ref if ethnl_default_parse() failed
authorJakub Kicinski <kuba@kernel.org>
Mon, 30 Jun 2025 15:40:53 +0000 (08:40 -0700)
committerJakub Kicinski <kuba@kernel.org>
Wed, 2 Jul 2025 00:27:53 +0000 (17:27 -0700)
commit3249eae7e4453909b0e0afb228804e76358be38f
tree177b69aceeb60c01b3f5fcd08bf0d34ec3daa0f7
parentca899622c528e33f1906377c7c07645309095c08
net: ethtool: fix leaking netdev ref if ethnl_default_parse() failed

Ido spotted that I made a mistake in commit under Fixes,
ethnl_default_parse() may acquire a dev reference even when it returns
an error. This may have been driven by the code structure in dumps
(which unconditionally release dev before handling errors), but it's
too much of a trap. Functions should undo what they did before returning
an error, rather than expecting caller to clean up.

Rather than fixing ethnl_default_set_doit() directly make
ethnl_default_parse() clean up errors.

Reported-by: Ido Schimmel <idosch@idosch.org>
Link: https://lore.kernel.org/aGEPszpq9eojNF4Y@shredder
Fixes: 963781bdfe20 ("net: ethtool: call .parse_request for SET handlers")
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Link: https://patch.msgid.link/20250630154053.1074664-1-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ethtool/netlink.c