On Thursday, 2017-03-16 00:08:59 +0000, Eric Engestrom wrote:
According to the kernel documentation: Returns non-zero if @v was not @u, and zero otherwise.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100077 Fixes: 63fc571863aa64683400 ("atomic: add atomic_add_unless()") Signed-off-by: David Shao davshao@gmail.com Reviewed-by: Eric Engestrom eric@engestrom.ch Signed-off-by: Eric Engestrom eric@engestrom.ch
That last s-o-b was added automatically, by mistake. I'll remove it when pushing this.
This patch seems trivial to verify, can someone confirm this is right?
/me is about ~94% sure, but doesn't know much about atomic ops and their return value convention.
I checked the kernel and it does what libdrm does after this patch, so either one should be fixed; I'm assuming kernel is right and libdrm needs fixing, hence this patch.
Cheers, Eric
xf86atomic.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/xf86atomic.h b/xf86atomic.h index 922b37da..ecb1ba86 100644 --- a/xf86atomic.h +++ b/xf86atomic.h @@ -111,7 +111,7 @@ static inline int atomic_add_unless(atomic_t *v, int add, int unless) c = atomic_read(v); while (c != unless && (old = atomic_cmpxchg(v, c, c + add)) != c) c = old;
- return c == unless;
- return c != unless;
}
#endif
Cheers, Eric