Module: kamailio
Branch: master
Commit: 47aa94c694e5471fa85bb15c372f9120876e4927
URL: 
https://github.com/kamailio/kamailio/commit/47aa94c694e5471fa85bb15c372f9120876e4927

Author: tsearle <[email protected]>
Committer: tsearle <[email protected]>
Date: 2016-02-25T09:56:09+01:00

core/futex: fix bug in futex_try

atomic_cmpxchg returns the previous value.  If the previous value was 0 then it 
was previously unlocked and we now have acquired the lock.

Thus, it should  be c==0 that is considered as the case we enter the lock, not 
c!=0

As far as I can tell, lock_try (and lock_set_try) are currently no used 
anywhere in the code, so this fix shoudn't have any impact

---

Modified: futexlock.h

---

Diff:  
https://github.com/kamailio/kamailio/commit/47aa94c694e5471fa85bb15c372f9120876e4927.diff
Patch: 
https://github.com/kamailio/kamailio/commit/47aa94c694e5471fa85bb15c372f9120876e4927.patch

---

diff --git a/futexlock.h b/futexlock.h
index 7aa7c73..db2fca4 100644
--- a/futexlock.h
+++ b/futexlock.h
@@ -142,7 +142,7 @@ static inline int futex_try(futex_lock_t* lock)
 {
        int c;
        c=atomic_cmpxchg(lock, 0, 1);
-       if (likely(c))
+       if (likely(c==0))
                membar_enter_lock();
        return c;
 }


_______________________________________________
sr-dev mailing list
[email protected]
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to