aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/rcu/rcu.h
diff options
context:
space:
mode:
authorLai Jiangshan <laijs@cn.fujitsu.com>2014-11-18 16:30:01 +0800
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2015-01-06 11:02:52 -0800
commitabaf3f9d275b8d856ae5e47531e40c0bfeac012b (patch)
tree017561fdbffe2f3e840d6af7c5a7bbcf015c70c9 /kernel/rcu/rcu.h
parentrcu: Note quiescent state when CPU goes offline (diff)
downloadlinux-dev-abaf3f9d275b8d856ae5e47531e40c0bfeac012b.tar.xz
linux-dev-abaf3f9d275b8d856ae5e47531e40c0bfeac012b.zip
rcu: Revert "Allow post-unlock reference for rt_mutex" to avoid priority-inversion
The patch dfeb9765ce3c ("Allow post-unlock reference for rt_mutex") ensured rcu-boost safe even the rt_mutex has post-unlock reference. But rt_mutex allowing post-unlock reference is definitely a bug and it was fixed by the commit 27e35715df54 ("rtmutex: Plug slow unlock race"). This fix made the previous patch (dfeb9765ce3c) useless. And even worse, the priority-inversion introduced by the the previous patch still exists. rcu_read_unlock_special() { rt_mutex_unlock(&rnp->boost_mtx); /* Priority-Inversion: * the current task had been deboosted and preempted as a low * priority task immediately, it could wait long before reschedule in, * and the rcu-booster also waits on this low priority task and sleeps. * This priority-inversion makes rcu-booster can't work * as expected. */ complete(&rnp->boost_completion); } Just revert the patch to avoid it. Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Peter Zijlstra <peterz@infradead.org> Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'kernel/rcu/rcu.h')
0 files changed, 0 insertions, 0 deletions