summaryrefslogtreecommitdiff
path: root/net/decnet
diff options
context:
space:
mode:
authorXin Long <lucien.xin@gmail.com>2022-06-24 19:24:31 +0300
committerDavid S. Miller <davem@davemloft.net>2022-06-27 13:51:56 +0300
commitcb8092d70a6f5f01ec1490fce4d35efed3ed996c (patch)
tree16c813f49933271fe9ff4ebf50637edc821a7619 /net/decnet
parent853a7614880231747040cada91d2b8d2e995c51a (diff)
downloadlinux-cb8092d70a6f5f01ec1490fce4d35efed3ed996c.tar.xz
tipc: move bc link creation back to tipc_node_create
Shuang Li reported a NULL pointer dereference crash: [] BUG: kernel NULL pointer dereference, address: 0000000000000068 [] RIP: 0010:tipc_link_is_up+0x5/0x10 [tipc] [] Call Trace: [] <IRQ> [] tipc_bcast_rcv+0xa2/0x190 [tipc] [] tipc_node_bc_rcv+0x8b/0x200 [tipc] [] tipc_rcv+0x3af/0x5b0 [tipc] [] tipc_udp_recv+0xc7/0x1e0 [tipc] It was caused by the 'l' passed into tipc_bcast_rcv() is NULL. When it creates a node in tipc_node_check_dest(), after inserting the new node into hashtable in tipc_node_create(), it creates the bc link. However, there is a gap between this insert and bc link creation, a bc packet may come in and get the node from the hashtable then try to dereference its bc link, which is NULL. This patch is to fix it by moving the bc link creation before inserting into the hashtable. Note that for a preliminary node becoming "real", the bc link creation should also be called before it's rehashed, as we don't create it for preliminary nodes. Fixes: 4cbf8ac2fe5a ("tipc: enable creating a "preliminary" node") Reported-by: Shuang Li <shuali@redhat.com> Signed-off-by: Xin Long <lucien.xin@gmail.com> Acked-by: Jon Maloy <jmaloy@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/decnet')
0 files changed, 0 insertions, 0 deletions