• Takeshi Misawa's avatar
    keys: Fix memory leak in copy_net_ns · 82ecff65
    Takeshi Misawa authored
    If copy_net_ns() failed after net_alloc(), net->key_domain is leaked.
    Fix this, by freeing key_domain in error path.
    
    syzbot report:
    BUG: memory leak
    unreferenced object 0xffff8881175007e0 (size 32):
      comm "syz-executor902", pid 7069, jiffies 4294944350 (age 28.400s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<00000000a83ed741>] kmemleak_alloc_recursive include/linux/kmemleak.h:43 [inline]
        [<00000000a83ed741>] slab_post_alloc_hook mm/slab.h:439 [inline]
        [<00000000a83ed741>] slab_alloc mm/slab.c:3326 [inline]
        [<00000000a83ed741>] kmem_cache_alloc_trace+0x13d/0x280 mm/slab.c:3553
        [<0000000059fc92b9>] kmalloc include/linux/slab.h:547 [inline]
        [<0000000059fc92b9>] kzalloc include/linux/slab.h:742 [inline]
        [<0000000059fc92b9>] net_alloc net/core/net_namespace.c:398 [inline]
        [<0000000059fc92b9>] copy_net_ns+0xb2/0x220 net/core/net_namespace.c:445
        [<00000000a9d74bbc>] create_new_namespaces+0x141/0x2a0 kernel/nsproxy.c:103
        [<000000008047d645>] unshare_nsproxy_namespaces+0x7f/0x100 kernel/nsproxy.c:202
        [<000000005993ea6e>] ksys_unshare+0x236/0x490 kernel/fork.c:2674
        [<0000000019417e75>] __do_sys_unshare kernel/fork.c:2742 [inline]
        [<0000000019417e75>] __se_sys_unshare kernel/fork.c:2740 [inline]
        [<0000000019417e75>] __x64_sys_unshare+0x16/0x20 kernel/fork.c:2740
        [<00000000f4c5f2c8>] do_syscall_64+0x76/0x1a0 arch/x86/entry/common.c:296
        [<0000000038550184>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    syzbot also reported other leak in copy_net_ns -> setup_net.
    This problem is already fixed by cf47a0b8.
    
    Fixes: 9b242610 ("keys: Network namespace domain tag")
    Reported-and-tested-by: syzbot+3b3296d032353c33184b@syzkaller.appspotmail.com
    Signed-off-by: default avatarTakeshi Misawa <jeliantsurux@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    82ecff65
net_namespace.c 32.7 KB