Messages in this thread | | | Date | Fri, 21 May 2004 16:05:10 -0700 | From | Andrew Morton <> | Subject | Re: [PATCH] Add FUTEX_CMP_REQUEUE futex op |
| |
Jakub Jelinek <jakub@redhat.com> wrote: > > The patch below extends FUTEX_REQUEUE operation with something FUTEX_WAIT > already uses: > FUTEX_CMP_REQUEUE is passed an additional argument which is the expected > value of *futex. Kernel then while holding the futex locks checks if
^^^^^^^^^^^^^^^^^^^^^^^
But in your patch the check is happening _prior_ to taking the futex locks.
> *futex != expected and returns -EAGAIN in that case, while if it is equal, > continues with a normal FUTEX_REQUEUE operation. > If the syscall returns -EAGAIN, NPTL can fall back to FUTEX_WAKE INT_MAX > operation which doesn't have this problem, but is less efficient, while > in the likely case that nobody hit the (small) window the efficient > FUTEX_REQUEUE operation is used.
You've added an smp_mb(). These things are becoming like lock_kernel() - hard for the reader to discern what it's protecting against.
Please always include a comment when adding a barrier like this. - 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/
| |