• Toshiaki Makita's avatar
    veth: Free queues on link delete · 7797b93b
    Toshiaki Makita authored
    David Ahern reported memory leak in veth.
    
    =======================================================================
    $ cat /sys/kernel/debug/kmemleak
    unreferenced object 0xffff8800354d5c00 (size 1024):
      comm "ip", pid 836, jiffies 4294722952 (age 25.904s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<(____ptrval____)>] kmemleak_alloc+0x70/0x94
        [<(____ptrval____)>] slab_post_alloc_hook+0x42/0x52
        [<(____ptrval____)>] __kmalloc+0x101/0x142
        [<(____ptrval____)>] kmalloc_array.constprop.20+0x1e/0x26 [veth]
        [<(____ptrval____)>] veth_newlink+0x147/0x3ac [veth]
        ...
    unreferenced object 0xffff88002e009c00 (size 1024):
      comm "ip", pid 836, jiffies 4294722958 (age 25.898s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<(____ptrval____)>] kmemleak_alloc+0x70/0x94
        [<(____ptrval____)>] slab_post_alloc_hook+0x42/0x52
        [<(____ptrval____)>] __kmalloc+0x101/0x142
        [<(____ptrval____)>] kmalloc_array.constprop.20+0x1e/0x26 [veth]
        [<(____ptrval____)>] veth_newlink+0x219/0x3ac [veth]
    =======================================================================
    
    veth_rq allocated in veth_newlink() was not freed on dellink.
    
    We need to free up them after veth_close() so that any packets will not
    reference the queues afterwards. Thus free them in veth_dev_free() in
    the same way as freeing stats structure (vstats).
    
    Also move queues allocation to veth_dev_init() to be in line with stats
    allocation.
    
    Fixes: 638264dc ("veth: Support per queue XDP ring")
    Reported-by: default avatarDavid Ahern <dsahern@gmail.com>
    Signed-off-by: default avatarToshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
    Reviewed-by: default avatarDavid Ahern <dsahern@gmail.com>
    Tested-by: default avatarDavid Ahern <dsahern@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    7797b93b
veth.c 27.7 KB