Looking at that closure stuff, why is there an smp_mb() inclosure_wake_up() ? Typically wakeup only needs to imply a wmb.Also note that __closure_wake_up() starts with a fully serializinginstruction (xchg) and thereby already implies the full barrier.