]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
tipc: Remove deferred queue head caching during broadcast message reception
authorAllan Stephens <allan.stephens@windriver.com>
Thu, 7 Apr 2011 18:20:45 +0000 (14:20 -0400)
committerPaul Gortmaker <paul.gortmaker@windriver.com>
Thu, 1 Sep 2011 15:16:36 +0000 (11:16 -0400)
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>
net/tipc/bcast.c

index bc01ca6891e4c927f2487b15fdb3deefb1896c08..8d298526a5c14ee0e21a2b9b42bd02b2e10772af 100644 (file)
@@ -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);