Messages in this thread | | | Subject | Re: race condition in down_interruptible | Date | Sat, 13 Feb 1999 17:40:19 +0100 | From | Ulrich Schmid <> |
| |
On Sat, 13 Feb 1999, Andrea Arcangeli wrote
> On Fri, 12 Feb 1999, Ulrich Schmid wrote: > > > sem->count sem->waking > >No process holds the semaphore 1 0 > >Process A acquires the semaphore 0 0 > >Process B calls down_interruptible() -1 0 > >Process B is interrupted and passes > > waking_non_zero() -1 0 > >Process A calls up() (on another CPU) 0 1 > > B get wakenup and runs waking_non_zero that sees sem->waking == 1 and so > do sem->waking-- and then B has no way to runs atomic_inc() because > waking_non_zero returned 1 (owned the semaphore).
If B runs waking_non_zero before A calls up, it will see sem->waking == 0.
Ulrich Schmid
- 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/
| |