summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllan Stephens <allan.stephens@windriver.com>2011-04-07 14:20:45 -0400
committerPaul Gortmaker <paul.gortmaker@windriver.com>2011-09-01 11:16:36 -0400
commit693d03ae3c2bafd7caca1cf4ade9f23f107e33c1 (patch)
tree2dc990b3f30e566ae10d31029dc8182d6f20c4dd
parent5d3c488dfe5f797d9f3cee2e8928aad8a2f6e44f (diff)
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>
-rw-r--r--net/tipc/bcast.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/tipc/bcast.c b/net/tipc/bcast.c
index bc01ca6891e4..8d298526a5c1 100644
--- a/net/tipc/bcast.c
+++ b/net/tipc/bcast.c
@@ -467,7 +467,6 @@ void tipc_bclink_recv_pkt(struct sk_buff *buf)
/* Handle in-sequence broadcast message */
receive:
- deferred = node->bclink.deferred_head;
next_in = mod(node->bclink.last_in + 1);
seqno = msg_seqno(msg);
@@ -500,6 +499,7 @@ receive:
}
buf = NULL;
tipc_node_lock(node);
+ deferred = node->bclink.deferred_head;
if (deferred && (buf_seqno(deferred) == mod(next_in + 1))) {
buf = deferred;
msg = buf_msg(buf);