RCU fix
Linus,
Please pull the latest core-urgent-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git core-urgent-for-linus
HEAD: b41772abebc27c61dd578b76da99aa5240b4c99a rcu: Stop rcu_do_batch() from multiplexing the "count" variable
Thanks,
Ingo
------------------>
Paul E. McKenney (1):
rcu: Stop rcu_do_batch() from multiplexing the "count" variable
kernel/rcutree.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)
kernel/rcutree.c +7 -7
@@ -1530,7 +1530,7 @@ static void rcu_do_batch(struct rcu_state *rsp, struct rcu_data *rdp) {unsigned long flags;struct rcu_head *next, *list, **tail; -int bl, count, count_lazy; +int bl, count, count_lazy, i;/* If no callbacks are ready, just return.*/ if (!cpu_has_callbacks_ready_to_invoke (rdp)) {
@@ -1553,9 +1553,9 @@ static void rcu_do_batch(struct rcu_state *rsp, struct rcu_data *rdp) rdp->nxtlist = *rdp->nxttail[RCU_DONE_TAIL ]; *rdp->nxttail[RCU_DONE_TAIL ] =NULL ; tail = rdp->nxttail[RCU_DONE_TAIL ]; -for (count =RCU_NEXT_SIZE -1 ; count >=0 ; count--) -if (rdp->nxttail[count] == rdp->nxttail[RCU_DONE_TAIL ]) - rdp->nxttail[count] = &rdp->nxtlist; +for (i =RCU_NEXT_SIZE -1 ; i >=0 ; i--) +if (rdp->nxttail[i] == rdp->nxttail[RCU_DONE_TAIL ]) + rdp->nxttail[i] = &rdp->nxtlist;local_irq_restore (flags);/* Invoke callbacks. */
@@ -1583,9 +1583,9 @@ static void rcu_do_batch(struct rcu_state *rsp, struct rcu_data *rdp)if (list !=NULL ) { *tail = rdp->nxtlist; rdp->nxtlist = list; -for (count =0 ; count <RCU_NEXT_SIZE ; count++) -if (&rdp->nxtlist == rdp->nxttail[count]) - rdp->nxttail[count] = tail; +for (i =0 ; i <RCU_NEXT_SIZE ; i++) +if (&rdp->nxtlist == rdp->nxttail[i]) + rdp->nxttail[i] = tail;else break ; }