ip6_vti: fix memleak on netns dismantle
authorFlorian Westphal <fw@strlen.de>
Mon, 15 Apr 2024 12:23:44 +0000 (14:23 +0200)
committerJakub Kicinski <kuba@kernel.org>
Wed, 17 Apr 2024 00:33:59 +0000 (17:33 -0700)
kmemleak reports net_device resources are no longer released, restore
needs_free_netdev toggle.  Sample backtrace:

unreferenced object 0xffff88810874f000 (size 4096): [..]
    [<00000000a2b8af8b>] __kmalloc_node+0x209/0x290
    [<0000000040b0a1a9>] alloc_netdev_mqs+0x58/0x470
    [<00000000b4be1e78>] vti6_init_net+0x94/0x230
    [<000000008830c1ea>] ops_init+0x32/0xc0
    [<000000006a26fa8f>] setup_net+0x134/0x2e0
[..]

Cc: Breno Leitao <leitao@debian.org>
Fixes: a9b2d55a8f1e ("ip6_vti: Do not use custom stat allocator")
Signed-off-by: Florian Westphal <fw@strlen.de>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://lore.kernel.org/r/20240415122346.26503-1-fw@strlen.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv6/ip6_vti.c

index 4d68a0777b0cfaff7c19b12371d7efe92b6111e2..78344cf3867eac74cdaff5eda5d603ba68db3828 100644 (file)
@@ -901,6 +901,7 @@ static void vti6_dev_setup(struct net_device *dev)
 {
        dev->netdev_ops = &vti6_netdev_ops;
        dev->header_ops = &ip_tunnel_header_ops;
+       dev->needs_free_netdev = true;
 
        dev->pcpu_stat_type = NETDEV_PCPU_STAT_TSTATS;
        dev->type = ARPHRD_TUNNEL6;