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

From: Linus Torvalds
Date: Wed Aug 13 2008 - 16:14:52 EST




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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/