lkml.org 
[lkml]   [2002]   [Mar]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH] Fast Userspace Mutexes III.
On Mon, Mar 04, 2002 at 02:55:36PM +1100, Rusty Russell wrote:
> + /* If we take the semaphore from 1 to 0, it's ours. */
> + while (!atomic_dec_and_test(count)) {
> + if (signal_pending(current)) {
> + retval = -EINTR;
> + break;

This is not safe from wraparound. Let one thread hold the
lock forever; let other threads keep trying to take the lock
while periodically getting SIGALRM. Eventually one of the
spinning threads will incorrectly acquire the mutex.

On sparc32, atomic_t is only 24 bits wide, so it wouldn't
take very long at all to wrap. It's slightly longer for
the other platforms, but it can still happen. And note
that even 64-bit platforms may be using a 32-bit atomic_t.

You really do need that cmpxchg loop.


r~
-
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/

\
 
 \ /
  Last update: 2005-03-22 13:24    [from the cache]
©2003-2014 Jasper Spaans. Advertise on this site