tipc: Prevent null pointer error when removing a node subscription
authorAllan Stephens <Allan.Stephens@windriver.com>
Wed, 23 Feb 2011 18:51:15 +0000 (13:51 -0500)
committerPaul Gortmaker <paul.gortmaker@windriver.com>
Sun, 13 Mar 2011 20:35:16 +0000 (16:35 -0400)
commit431697eb60d2d36614096aff12bd1b826a9f9bc1
treeb9923f1d8b90438920fe16b6f3650a3ce40d6147
parenta3796f895ff2917aea331a8d40036c73452b2203
tipc: Prevent null pointer error when removing a node subscription

Prevents a null pointer dereference from occurring if a node subscription
is triggered at the same time that the subscribing port or publication is
terminating the subscription. The problem arises if the triggering routine
asynchronously activates and deregisters the node subscription while
deregistration is already underway -- the deregistration routine may find
that the pointer it has just verified to be non-NULL is now NULL.
To avoid this race condition the triggering routine now simply marks the
node subscription as defunct (to prevent it from re-activating)
instead of deregistering it. The subscription is now both deregistered
and destroyed only when the subscribing port or publication code terminates
the node subscription.

Signed-off-by: Allan Stephens <Allan.Stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
net/tipc/name_distr.c
net/tipc/node.c