Some time ago (heck, it was in late 90s, IIRC), DaveM did a presentation to a group called "Desktop Performance Council" at Sun, which pretty much was themed "Why Solaris Sucks". I'm sure it was an entertaining session. At the time he identified the spinlock bracket, such as Roland mentioned, to be detrimental, and pronounced the use of atomic_t superior.
Unfortunately, this was in days of gcc 2.7.2, when we were far more lax about optimization barriers, and since atomic_t did not gain barriers, it cannot be used like spinlocks can, when gcc 4 flexes its muscle. So my recent usblp patch uses spinlocks exactly the way DaveM lampooned as Solaris' foolishness 10 years ago.