• Tuong Lien's avatar
    tipc: fix NULL pointer dereference in tipc_disc_rcv() · 97982782
    Tuong Lien authored
    When a bearer is enabled, we create a 'tipc_discoverer' object to store
    the bearer related data along with a timer and a preformatted discovery
    message buffer for later probing... However, this is only carried after
    the bearer was set 'up', that left a race condition resulting in kernel
    panic.
    
    It occurs when a discovery message from a peer node is received and
    processed in bottom half (since the bearer is 'up' already) just before
    the discoverer object is created but is now accessed in order to update
    the preformatted buffer (with a new trial address, ...) so leads to the
    NULL pointer dereference.
    
    We solve the problem by simply moving the bearer 'up' setting to later,
    so make sure everything is ready prior to any message receiving.
    Acked-by: default avatarJon Maloy <jmaloy@redhat.com>
    Signed-off-by: default avatarTuong Lien <tuong.t.lien@dektech.com.au>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    97982782
bearer.c 30.7 KB