diff options
author | Allan Stephens <allan.stephens@windriver.com> | 2011-04-07 14:20:45 -0400 |
---|---|---|
committer | Paul Gortmaker <paul.gortmaker@windriver.com> | 2011-09-01 11:16:36 -0400 |
commit | 693d03ae3c2bafd7caca1cf4ade9f23f107e33c1 (patch) | |
tree | 2dc990b3f30e566ae10d31029dc8182d6f20c4dd /net/tipc/bcast.c | |
parent | 5d3c488dfe5f797d9f3cee2e8928aad8a2f6e44f (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>
Diffstat (limited to 'net/tipc/bcast.c')
-rw-r--r-- | net/tipc/bcast.c | 2 |
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) | |||
467 | /* Handle in-sequence broadcast message */ | 467 | /* Handle in-sequence broadcast message */ |
468 | 468 | ||
469 | receive: | 469 | receive: |
470 | deferred = node->bclink.deferred_head; | ||
471 | next_in = mod(node->bclink.last_in + 1); | 470 | next_in = mod(node->bclink.last_in + 1); |
472 | seqno = msg_seqno(msg); | 471 | seqno = msg_seqno(msg); |
473 | 472 | ||
@@ -500,6 +499,7 @@ receive: | |||
500 | } | 499 | } |
501 | buf = NULL; | 500 | buf = NULL; |
502 | tipc_node_lock(node); | 501 | tipc_node_lock(node); |
502 | deferred = node->bclink.deferred_head; | ||
503 | if (deferred && (buf_seqno(deferred) == mod(next_in + 1))) { | 503 | if (deferred && (buf_seqno(deferred) == mod(next_in + 1))) { |
504 | buf = deferred; | 504 | buf = deferred; |
505 | msg = buf_msg(buf); | 505 | msg = buf_msg(buf); |