Re: [Linux-ia64] Linux kernel deadlock caused by spinlock bug

From: Matthew Wilcox (willy@debian.org)
Date: Mon Jul 29 2002 - 15:46:56 EST


On Mon, Jul 29, 2002 at 03:37:17PM -0500, Van Maren, Kevin wrote:
> I changed the code to allow the writer bit to remain set even if
> there is a reader. By only allowing a single processor to set
> the writer bit, I don't have to worry about pending writers starving
> out readers. The potential writer that was able to set the writer bit
> gains ownership of the lock when the current readers finish. Since
> the retry for read_lock does not keep trying to increment the reader
> count, there are no other required changes.

however, this is broken. linux relies on being able to do

read_lock(x);
func()
  -> func()
       -> func()
            -> read_lock(x);

if a writer comes between those two read locks, you're toast.

i suspect the right answer for the contention you're seeing is an improved
get_timeofday which is lockless.

-- 
Revolutions do not require corporate support.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue Jul 30 2002 - 14:00:34 EST