Re: [PATCH] kexec jump: fix compiling warning on xchg(&kexec_lock, 0) in kernel_kexec()

Linus Torvalds
2008-08-13T20:14:50Z

On Wed, 13 Aug 2008, Andrew Morton wrote:
> >
> > Nope. That needs to be an "unsigned long".
>
> It is.

Gaah. I just misread the patch, sorry.

> Used a bitop to preserve the runtime checking in there. spin_unlock()
> doesn't return the previous lockedness.

Umm. spin_unlock does a lot more when you have lock debugging on, and
doesn't do useless crap when it isn't.

> A bitop seems a better fit to me. We never spin on that lock (it
> always uses test_and_set), so why use a "spin"lock?

..because an atomic bitop is not the same as a lock.

The memory ordering guarantees are different. Yes, they are sufficient,
but that's because we've had to make them so to account for CRAP CODE that
uses bit operations as if they were locks.

Don't continue that. It's WRONG.

Linus