rtnetlink: fix netns leak with rtnl_setlink()
authorNicolas Dichtel <nicolas.dichtel@6wind.com>
Wed, 5 Feb 2025 22:10:37 +0000 (23:10 +0100)
committerJakub Kicinski <kuba@kernel.org>
Fri, 7 Feb 2025 01:17:44 +0000 (17:17 -0800)
A call to rtnl_nets_destroy() is needed to release references taken on
netns put in rtnl_nets.

CC: stable@vger.kernel.org
Fixes: 636af13f213b ("rtnetlink: Register rtnl_dellink() and rtnl_setlink() with RTNL_FLAG_DOIT_PERNET_WIP.")
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Link: https://patch.msgid.link/20250205221037.2474426-1-nicolas.dichtel@6wind.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/core/rtnetlink.c

index 1f4d4b5570ab896593a6b3216678b90c7b0696de..d1e559fce918d3f1c32ac5313812df11be09ecc3 100644 (file)
@@ -3432,6 +3432,7 @@ static int rtnl_setlink(struct sk_buff *skb, struct nlmsghdr *nlh,
                err = -ENODEV;
 
        rtnl_nets_unlock(&rtnl_nets);
+       rtnl_nets_destroy(&rtnl_nets);
 errout:
        return err;
 }