]> git.baikalelectronics.ru Git - kernel.git/commit
tipc: fix NULL pointer dereference in tipc_disc_rcv()
authorTuong Lien <tuong.t.lien@dektech.com.au>
Thu, 11 Jun 2020 10:08:08 +0000 (17:08 +0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 11 Jun 2020 19:48:08 +0000 (12:48 -0700)
commitf4e2eadf26010a5e26f85ce5371aed97256e0156
treed431712690dc3493cf9d717a25c0c94ce7463993
parent990276bab679cfd620bd496fde681e8df2aca576
tipc: fix NULL pointer dereference in tipc_disc_rcv()

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: Jon Maloy <jmaloy@redhat.com>
Signed-off-by: Tuong Lien <tuong.t.lien@dektech.com.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/tipc/bearer.c