summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorVineet Gupta <vineet.gupta1@synopsys.com>2019-03-08 03:28:14 +0300
committerLinus Torvalds <torvalds@linux-foundation.org>2019-03-08 05:32:00 +0300
commit1db604f676b2edb7b18de7881f4d5988e97be616 (patch)
tree0b64bc3840855ba0f6ddadc4d4c26f7a293ce92c /include/linux
parentf1ebe04f5ba2f49fd672f12cdef46acda73cd9cf (diff)
downloadlinux-1db604f676b2edb7b18de7881f4d5988e97be616.tar.xz
include/linux/bitops.h: set_mask_bits() to return old value
| > Also, set_mask_bits is used in fs quite a bit and we can possibly come up | > with a generic llsc based implementation (w/o the cmpxchg loop) | | May I also suggest changing the return value of set_mask_bits() to old. | | You can compute the new value given old, but you cannot compute the old | value given new, therefore old is the better return value. Also, no | current user seems to use the return value, so changing it is without | risk. Link: http://lkml.kernel.org/g/20150807110955.GH16853@twins.programming.kicks-ass.net Link: http://lkml.kernel.org/r/1548275584-18096-4-git-send-email-vgupta@synopsys.com Signed-off-by: Vineet Gupta <vgupta@synopsys.com> Suggested-by: Peter Zijlstra <peterz@infradead.org> Reviewed-by: Anthony Yznaga <anthony.yznaga@oracle.com> Acked-by: Will Deacon <will.deacon@arm.com> Cc: Miklos Szeredi <mszeredi@redhat.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Jani Nikula <jani.nikula@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Alexander Viro <viro@zeniv.linux.org.uk> Cc: Oleg Nesterov <oleg@redhat.com> Cc: Theodore Ts'o <tytso@mit.edu> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/bitops.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/include/linux/bitops.h b/include/linux/bitops.h
index 705f7c442691..602af23b98c7 100644
--- a/include/linux/bitops.h
+++ b/include/linux/bitops.h
@@ -246,7 +246,7 @@ static __always_inline void __assign_bit(long nr, volatile unsigned long *addr,
new__ = (old__ & ~mask__) | bits__; \
} while (cmpxchg(ptr, old__, new__) != old__); \
\
- new__; \
+ old__; \
})
#endif