diff --git a/[refs] b/[refs] index 8cc8cfc71e60..8ec33e5f7a02 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ae778869ae4549628b9e83efe958c3aaa63ed1b9 +refs/heads/master: c9e71002aacc9821e99531dcc130db88bbc8ad05 diff --git a/trunk/kernel/rcupreempt.c b/trunk/kernel/rcupreempt.c index 845abcd472b0..e9517014b57c 100644 --- a/trunk/kernel/rcupreempt.c +++ b/trunk/kernel/rcupreempt.c @@ -952,9 +952,11 @@ static void rcu_process_callbacks(struct softirq_action *unused) { unsigned long flags; struct rcu_head *next, *list; - struct rcu_data *rdp = RCU_DATA_ME(); + struct rcu_data *rdp; - spin_lock_irqsave(&rdp->lock, flags); + local_irq_save(flags); + rdp = RCU_DATA_ME(); + spin_lock(&rdp->lock); list = rdp->donelist; if (list == NULL) { spin_unlock_irqrestore(&rdp->lock, flags);