]> git.baikalelectronics.ru Git - kernel.git/commit
x86/uaccess: Implement macros for CMPXCHG on user addresses
authorPeter Zijlstra <peterz@infradead.org>
Wed, 2 Feb 2022 00:49:42 +0000 (00:49 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 29 Jul 2022 15:14:17 +0000 (17:14 +0200)
commitf72619ff49d70f7be7761244b3a0361fbd5530a7
treee9ef75183353b0f0545275b4e8d887e270dfd722
parentb09dd349a957bd9eaf1b7484f84d5f3f68a2affe
x86/uaccess: Implement macros for CMPXCHG on user addresses

[ Upstream commit 3c75cc27a67db2dd69d91a791d3c0e4dd2f504b8 ]

Add support for CMPXCHG loops on userspace addresses.  Provide both an
"unsafe" version for tight loops that do their own uaccess begin/end, as
well as a "safe" version for use cases where the CMPXCHG is not buried in
a loop, e.g. KVM will resume the guest instead of looping when emulation
of a guest atomic accesses fails the CMPXCHG.

Provide 8-byte versions for 32-bit kernels so that KVM can do CMPXCHG on
guest PAE PTEs, which are accessed via userspace addresses.

Guard the asm_volatile_goto() variation with CC_HAS_ASM_GOTO_TIED_OUTPUT,
the "+m" constraint fails on some compilers that otherwise support
CC_HAS_ASM_GOTO_OUTPUT.

Cc: stable@vger.kernel.org
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Co-developed-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20220202004945.2540433-3-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/x86/include/asm/uaccess.h