diff options
Diffstat (limited to 'kernel/rcu/tree.c')
| -rw-r--r-- | kernel/rcu/tree.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index e354e475e645..657056c3e0cd 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c | |||
| @@ -3578,8 +3578,14 @@ static void rcu_barrier_func(void *type) | |||
| 3578 | struct rcu_data *rdp = raw_cpu_ptr(rsp->rda); | 3578 | struct rcu_data *rdp = raw_cpu_ptr(rsp->rda); |
| 3579 | 3579 | ||
| 3580 | _rcu_barrier_trace(rsp, "IRQ", -1, rsp->barrier_sequence); | 3580 | _rcu_barrier_trace(rsp, "IRQ", -1, rsp->barrier_sequence); |
| 3581 | atomic_inc(&rsp->barrier_cpu_count); | 3581 | rdp->barrier_head.func = rcu_barrier_callback; |
| 3582 | rsp->call(&rdp->barrier_head, rcu_barrier_callback); | 3582 | debug_rcu_head_queue(&rdp->barrier_head); |
| 3583 | if (rcu_segcblist_entrain(&rdp->cblist, &rdp->barrier_head, 0)) { | ||
| 3584 | atomic_inc(&rsp->barrier_cpu_count); | ||
| 3585 | } else { | ||
| 3586 | debug_rcu_head_unqueue(&rdp->barrier_head); | ||
| 3587 | _rcu_barrier_trace(rsp, "IRQNQ", -1, rsp->barrier_sequence); | ||
| 3588 | } | ||
| 3583 | } | 3589 | } |
| 3584 | 3590 | ||
| 3585 | /* | 3591 | /* |
