diff options
-rw-r--r-- | kernel/rcupreempt.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/kernel/rcupreempt.c b/kernel/rcupreempt.c index 845abcd472b0..e9517014b57c 100644 --- a/kernel/rcupreempt.c +++ b/kernel/rcupreempt.c | |||
@@ -952,9 +952,11 @@ static void rcu_process_callbacks(struct softirq_action *unused) | |||
952 | { | 952 | { |
953 | unsigned long flags; | 953 | unsigned long flags; |
954 | struct rcu_head *next, *list; | 954 | struct rcu_head *next, *list; |
955 | struct rcu_data *rdp = RCU_DATA_ME(); | 955 | struct rcu_data *rdp; |
956 | 956 | ||
957 | spin_lock_irqsave(&rdp->lock, flags); | 957 | local_irq_save(flags); |
958 | rdp = RCU_DATA_ME(); | ||
959 | spin_lock(&rdp->lock); | ||
958 | list = rdp->donelist; | 960 | list = rdp->donelist; |
959 | if (list == NULL) { | 961 | if (list == NULL) { |
960 | spin_unlock_irqrestore(&rdp->lock, flags); | 962 | spin_unlock_irqrestore(&rdp->lock, flags); |