On Wed, 13 Aug 2008, Huang Ying wrote: > > - xchg(&kexec_lock, 0); > + locked = xchg(&kexec_lock, 0); > + BUG_ON(!locked); Why do you want to do this at all? And why do you implement your locks with xchg() in the first place? That's total and utter crap. Hint: we have _real_ locking primitives in the kernel. Linus