]> git.baikalelectronics.ru Git - kernel.git/commit
tipc: acquire necessary locks in named_cluster_distribute routine
authorYing Xue <ying.xue@windriver.com>
Thu, 27 Mar 2014 04:54:32 +0000 (12:54 +0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 27 Mar 2014 17:08:36 +0000 (13:08 -0400)
commit76b6b1e13115ef5fac33321bd5d9a3eb77119ef2
tree56d0b040948715a0e941a6a6c0b2440d14d731ed
parent53f3b5a56c412987469587d1c2e1b7337ccffebb
tipc: acquire necessary locks in named_cluster_distribute routine

The 'tipc_node_list' is guarded by tipc_net_lock and 'links' array
defined in 'tipc_node' structure is protected by node lock as well.
Without acquiring the two locks in named_cluster_distribute() a fatal
oops may happen in case that a destroyed link might be got and then
accessed. Therefore, above mentioned two locks must be held in
named_cluster_distribute() to prevent the issue from happening
accidentally.

As 'links' array in node struct must be protected by node lock,
we have to move the code of selecting an active link from
tipc_link_xmit() to named_cluster_distribute() and then call
__tipc_link_xmit() with the selected link to deliver name messages.

Signed-off-by: Ying Xue <ying.xue@windriver.com>
Reviewed-by: Erik Hugne <erik.hugne@ericsson.com>
Reviewed-by: Jon Maloy <jon.maloy@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/tipc/name_distr.c