There was a thread on this somewhere about a year ago, I finally remembered to finish this :-)
This series removes two smp_mb__before_spinlock() (ab)users and converts the scheduler to use smp_mb__after_spinlock(), which provides more guarantees with the same amount of barriers.