lkml.org 
[lkml]   [1999]   [Nov]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [Patch] shm bug introduced with pagecache in 2.3.11
Alan Cox wrote:
>
> > /* 3 asm instructions */
> > void release_exclusive(struct rw_mutex* rwm)
> > {
> > read_unlock(&rwm->rwl);
> > if(rwm->wake_me_up) {
> > rwm->wake_me_up = 0;
> > wake_up(&rwm->wait);
> > }
> > }
>
> That can race with another acquire surely. Suppose they set rmw->wake_me_up
> and we then continue our release and clear it.

But then we call wake_up(), we wake-up the second thread.
Now the second thread either acquires the lock, or it sets the value
back to 1.
This should be OK.

> Actually why do you want the wake_me_up field ?

I thought that would simplify the code. But unfortunately,
write_lock_trylock() is not atomic, and this means my proposal is
impossible.

I'm searching for another solution.
--
Manfred

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:55    [W:0.069 / U:0.092 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site