mm/rmap: use atomic_try_cmpxchg in set_tlb_ubc_flush_pending
authorUros Bizjak <ubizjak@gmail.com>
Mon, 27 Feb 2023 21:42:28 +0000 (22:42 +0100)
committerAndrew Morton <akpm@linux-foundation.org>
Tue, 28 Mar 2023 23:20:09 +0000 (16:20 -0700)
commitbdeb91881088810ab1d8ae620862c3b4d78f4041
treeb5790da422d9eb9b58e4d08905ffb3ef84b60377
parentf2421a16f42a2f121c587c89b60cc8f3f2df36c2
mm/rmap: use atomic_try_cmpxchg in set_tlb_ubc_flush_pending

Use atomic_try_cmpxchg instead of atomic_cmpxchg (*ptr, old, new) == old
in set_tlb_ubc_flush_pending.  86 CMPXCHG instruction returns success in
ZF flag, so this change saves a compare after cmpxchg (and related move
instruction in front of cmpxchg).

Also, try_cmpxchg implicitly assigns old *ptr value to "old" when cmpxchg
fails.

No functional change intended.

Link: https://lkml.kernel.org/r/20230227214228.3533299-1-ubizjak@gmail.com
Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/rmap.c