diff options
Diffstat (limited to 'kernel/rcuclassic.c')
-rw-r--r-- | kernel/rcuclassic.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/kernel/rcuclassic.c b/kernel/rcuclassic.c index 5de126630b10..fb1f1cc45142 100644 --- a/kernel/rcuclassic.c +++ b/kernel/rcuclassic.c | |||
@@ -700,7 +700,9 @@ void rcu_check_callbacks(int cpu, int user) | |||
700 | static void rcu_init_percpu_data(int cpu, struct rcu_ctrlblk *rcp, | 700 | static void rcu_init_percpu_data(int cpu, struct rcu_ctrlblk *rcp, |
701 | struct rcu_data *rdp) | 701 | struct rcu_data *rdp) |
702 | { | 702 | { |
703 | spin_lock(&rcp->lock); | 703 | long flags; |
704 | |||
705 | spin_lock_irqsave(&rcp->lock, flags); | ||
704 | memset(rdp, 0, sizeof(*rdp)); | 706 | memset(rdp, 0, sizeof(*rdp)); |
705 | rdp->nxttail[0] = rdp->nxttail[1] = rdp->nxttail[2] = &rdp->nxtlist; | 707 | rdp->nxttail[0] = rdp->nxttail[1] = rdp->nxttail[2] = &rdp->nxtlist; |
706 | rdp->donetail = &rdp->donelist; | 708 | rdp->donetail = &rdp->donelist; |
@@ -708,7 +710,7 @@ static void rcu_init_percpu_data(int cpu, struct rcu_ctrlblk *rcp, | |||
708 | rdp->qs_pending = 0; | 710 | rdp->qs_pending = 0; |
709 | rdp->cpu = cpu; | 711 | rdp->cpu = cpu; |
710 | rdp->blimit = blimit; | 712 | rdp->blimit = blimit; |
711 | spin_unlock(&rcp->lock); | 713 | spin_unlock_irqrestore(&rcp->lock, flags); |
712 | } | 714 | } |
713 | 715 | ||
714 | static void __cpuinit rcu_online_cpu(int cpu) | 716 | static void __cpuinit rcu_online_cpu(int cpu) |