• Hoang Le's avatar
    tipc: fix NULL deref in tipc_link_xmit() · b7741344
    Hoang Le authored
    The buffer list can have zero skb as following path:
    tipc_named_node_up()->tipc_node_xmit()->tipc_link_xmit(), so
    we need to check the list before casting an &sk_buff.
    
    Fault report:
     [] tipc: Bulk publication failure
     [] general protection fault, probably for non-canonical [#1] PREEMPT [...]
     [] KASAN: null-ptr-deref in range [0x00000000000000c8-0x00000000000000cf]
     [] CPU: 0 PID: 0 Comm: swapper/0 Kdump: loaded Not tainted 5.10.0-rc4+ #2
     [] Hardware name: Bochs ..., BIOS Bochs 01/01/2011
     [] RIP: 0010:tipc_link_xmit+0xc1/0x2180
     [] Code: 24 b8 00 00 00 00 4d 39 ec 4c 0f 44 e8 e8 d7 0a 10 f9 48 [...]
     [] RSP: 0018:ffffc90000006ea0 EFLAGS: 00010202
     [] RAX: dffffc0000000000 RBX: ffff8880224da000 RCX: 1ffff11003d3cc0d
     [] RDX: 0000000000000019 RSI: ffffffff886007b9 RDI: 00000000000000c8
     [] RBP: ffffc90000007018 R08: 0000000000000001 R09: fffff52000000ded
     [] R10: 0000000000000003 R11: fffff52000000dec R12: ffffc90000007148
     [] R13: 0000000000000000 R14: 0000000000000000 R15: ffffc90000007018
     [] FS:  0000000000000000(0000) GS:ffff888037400000(0000) knlGS:000[...]
     [] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     [] CR2: 00007fffd2db5000 CR3: 000000002b08f000 CR4: 00000000000006f0
    
    Fixes: af9b028e ("tipc: make media xmit call outside node spinlock context")
    Acked-by: default avatarJon Maloy <jmaloy@redhat.com>
    Signed-off-by: default avatarHoang Le <hoang.h.le@dektech.com.au>
    Link: https://lore.kernel.org/r/20210108071337.3598-1-hoang.h.le@dektech.com.auSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    b7741344
link.c 82.5 KB