diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2023-01-18 18:07:03 +0300 |
---|---|---|
committer | Andrew Morton <akpm@linux-foundation.org> | 2023-02-03 09:50:05 +0300 |
commit | 030c6ff6498881ac842c7f6da5eec181202b29f4 (patch) | |
tree | f08c6b2f70ed980d645fb671455023fb0e7e59c3 /scripts/checkpatch.pl | |
parent | f3296f80c8065b26a27eb8ab686d0c1d67880524 (diff) | |
download | linux-030c6ff6498881ac842c7f6da5eec181202b29f4.tar.xz |
lib/genalloc: use try_cmpxchg in {set,clear}_bits_ll
Use try_cmpxchg instead of cmpxchg (*ptr, old, new) == old in
{set,clear}_bits_ll. x86 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.
Note that the value from *ptr should be read using READ_ONCE to prevent
the compiler from merging, refetching or reordering the read.
The patch also declares these two functions inline, to ensure inlining.
No functional change intended.
Link: https://lkml.kernel.org/r/20230118150703.4024-1-ubizjak@gmail.com
Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'scripts/checkpatch.pl')
0 files changed, 0 insertions, 0 deletions