diff options
| -rw-r--r-- | include/linux/sched.h | 3 | ||||
| -rw-r--r-- | kernel/rcutiny_plugin.h | 10 | 
2 files changed, 7 insertions, 6 deletions
| diff --git a/include/linux/sched.h b/include/linux/sched.h index 7d379a6bfd88..e692abaf915a 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -1864,8 +1864,7 @@ extern void task_clear_jobctl_pending(struct task_struct *task,  #ifdef CONFIG_PREEMPT_RCU  #define RCU_READ_UNLOCK_BLOCKED (1 << 0) /* blocked while in RCU read-side. */ -#define RCU_READ_UNLOCK_BOOSTED (1 << 1) /* boosted while in RCU read-side. */ -#define RCU_READ_UNLOCK_NEED_QS (1 << 2) /* RCU core needs CPU response. */ +#define RCU_READ_UNLOCK_NEED_QS (1 << 1) /* RCU core needs CPU response. */  static inline void rcu_copy_process(struct task_struct *p)  { diff --git a/kernel/rcutiny_plugin.h b/kernel/rcutiny_plugin.h index 387c2759e1b0..22ecea0dfb62 100644 --- a/kernel/rcutiny_plugin.h +++ b/kernel/rcutiny_plugin.h @@ -318,7 +318,6 @@ static int rcu_boost(void)  	t = container_of(tb, struct task_struct, rcu_node_entry);  	rt_mutex_init_proxy_locked(&mtx, t);  	t->rcu_boost_mutex = &mtx; -	t->rcu_read_unlock_special |= RCU_READ_UNLOCK_BOOSTED;  	raw_local_irq_restore(flags);  	rt_mutex_lock(&mtx);  	rt_mutex_unlock(&mtx);  /* Keep lockdep happy. */ @@ -550,6 +549,9 @@ static noinline void rcu_read_unlock_special(struct task_struct *t)  	int empty_exp;  	unsigned long flags;  	struct list_head *np; +#ifdef CONFIG_RCU_BOOST +	struct rt_mutex *rbmp = NULL; +#endif /* #ifdef CONFIG_RCU_BOOST */  	int special;  	/* @@ -615,10 +617,10 @@ static noinline void rcu_read_unlock_special(struct task_struct *t)  	}  #ifdef CONFIG_RCU_BOOST  	/* Unboost self if was boosted. */ -	if (special & RCU_READ_UNLOCK_BOOSTED) { -		t->rcu_read_unlock_special &= ~RCU_READ_UNLOCK_BOOSTED; -		rt_mutex_unlock(t->rcu_boost_mutex); +	if (t->rcu_boost_mutex != NULL) { +		rbmp = t->rcu_boost_mutex;  		t->rcu_boost_mutex = NULL; +		rt_mutex_unlock(rbmp);  	}  #endif /* #ifdef CONFIG_RCU_BOOST */  	local_irq_restore(flags); | 
