Re: [PATCH] spinlock: __raw_spin_is_locked() should return true forUP

From: Linus Torvalds
Date: Tue Aug 18 2009 - 19:21:30 EST




On Tue, 18 Aug 2009, Kumar Gala wrote:
>
> For some reason __raw_spin_is_locked() has been returning false for the
> uni-processor, non-CONFIG_DEBUG_SPINLOCK. The UP + CONFIG_DEBUG_SPINLOCK
> handles this correctly.
>
> Found this by enabling CONFIG_DEBUG_VM on PPC and hitting always hitting
> a BUG_ON that was testing to make sure the pte_lock was held.
>
> Signed-off-by: Kumar Gala <galak@xxxxxxxxxxxxxxxxxxx>
> ---
>
> Linus, a fix for 2.6.31

This really isn't all that clear.

The thing is, some people may assert that a lock is held, but others could
easily be looping until it's not held using something like

while (spin_is_locked(lock))
cpu_relax();

so it's hard to tell whether it should return true or false in the case
where spin-locking simply doesn't exist.

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/