tipc: Remove deferred queue head caching during broadcast message reception
Modifies TIPC's incoming broadcast packet handler so that it no longer pre-reads information about the deferred packet queue, since the cached value is unreliable once the associated node lock has been released. Signed-off-by: Allan Stephens <allan.stephens@windriver.com> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
This commit is contained in:
parent
5d3c488dfe
commit
693d03ae3c
|
@ -467,7 +467,6 @@ void tipc_bclink_recv_pkt(struct sk_buff *buf)
|
||||||
/* Handle in-sequence broadcast message */
|
/* Handle in-sequence broadcast message */
|
||||||
|
|
||||||
receive:
|
receive:
|
||||||
deferred = node->bclink.deferred_head;
|
|
||||||
next_in = mod(node->bclink.last_in + 1);
|
next_in = mod(node->bclink.last_in + 1);
|
||||||
seqno = msg_seqno(msg);
|
seqno = msg_seqno(msg);
|
||||||
|
|
||||||
|
@ -500,6 +499,7 @@ receive:
|
||||||
}
|
}
|
||||||
buf = NULL;
|
buf = NULL;
|
||||||
tipc_node_lock(node);
|
tipc_node_lock(node);
|
||||||
|
deferred = node->bclink.deferred_head;
|
||||||
if (deferred && (buf_seqno(deferred) == mod(next_in + 1))) {
|
if (deferred && (buf_seqno(deferred) == mod(next_in + 1))) {
|
||||||
buf = deferred;
|
buf = deferred;
|
||||||
msg = buf_msg(buf);
|
msg = buf_msg(buf);
|
||||||
|
|
Loading…
Reference in a new issue