From b294e38d9f3cc6a352e9182a48a8a7300c19a6e5 Mon Sep 17 00:00:00 2001 From: "Paul E. McKenney" Date: Thu, 28 Feb 2008 11:51:07 -0800 Subject: [PATCH] --- yaml --- r: 86605 b: refs/heads/master c: c9e71002aacc9821e99531dcc130db88bbc8ad05 h: refs/heads/master i: 86603: 396db40b34e84152597194ce613b592965d10043 v: v3 --- [refs] | 2 +- trunk/kernel/rcupreempt.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) 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);