• L
    rcu: Revert "Allow post-unlock reference for rt_mutex" to avoid priority-inversion · abaf3f9d
    Lai Jiangshan 提交于
    The patch dfeb9765 ("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 27e35715 ("rtmutex: Plug slow unlock race").
    This fix made the previous patch (dfeb9765) 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: NLai Jiangshan <laijs@cn.fujitsu.com>
    Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
    abaf3f9d
tree.h 25.1 KB