On Tue, Jan 21, 2020 at 09:29:19PM +0100, Peter Zijlstra wrote: > @@ -92,8 +92,8 @@ static int __init cna_init_nodes(void) > } > early_initcall(cna_init_nodes); > > -static inline bool cna_try_change_tail(struct qspinlock *lock, u32 val, > - struct mcs_spinlock *node) > +static inline bool cna_try_clear_tail(struct qspinlock *lock, u32 val, > + struct mcs_spinlock *node) > { > struct mcs_spinlock *head_2nd, *tail_2nd; > u32 new; Also, that whole function is placed wrong; it should be between cna_wait_head_or_lock() and cna_pass_lock(), then it's in the order they appear in the slow path, ie. the order they actually run.