posix_acl: Use try_cmpxchg in get_acl
authorUros Bizjak <ubizjak@gmail.com>
Wed, 21 Dec 2022 19:35:40 +0000 (20:35 +0100)
committerChristian Brauner (Microsoft) <brauner@kernel.org>
Sun, 8 Jan 2023 11:37:49 +0000 (12:37 +0100)
Use try_cmpxchg instead of cmpxchg (*ptr, old, new) == old
in get_acl. x86 CMPXCHG instruction returns success in ZF flag,
so this change saves a compare after cmpxchg (and related move
instruction in front of cmpxchg).

No functional change intended.

Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
Cc: Christian Brauner <brauner@kernel.org>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Christian Brauner (Microsoft) <brauner@kernel.org>
fs/posix_acl.c

index d7bc81f..420c689 100644 (file)
@@ -174,7 +174,7 @@ static struct posix_acl *__get_acl(struct user_namespace *mnt_userns,
         * Cache the result, but only if our sentinel is still in place.
         */
        posix_acl_dup(acl);
-       if (unlikely(cmpxchg(p, sentinel, acl) != sentinel))
+       if (unlikely(!try_cmpxchg(p, &sentinel, acl)))
                posix_acl_release(acl);
        return acl;
 }