]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
x86/kvm: Alloc dummy async #PF token outside of raw spinlock
authorSean Christopherson <seanjc@google.com>
Thu, 19 May 2022 14:57:11 +0000 (07:57 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 6 Jun 2022 06:48:55 +0000 (08:48 +0200)
commit9fd15d9f62a12f5e0dc612fec9c106396daa9fa8
treefc2e755d84598caaca3a0c5e6e1432510310044e
parentc181acbd1a427859d5fda543b95fbae28f7f6068
x86/kvm: Alloc dummy async #PF token outside of raw spinlock

commit 0547758a6de3cc71a0cfdd031a3621a30db6a68b upstream.

Drop the raw spinlock in kvm_async_pf_task_wake() before allocating the
the dummy async #PF token, the allocator is preemptible on PREEMPT_RT
kernels and must not be called from truly atomic contexts.

Opportunistically document why it's ok to loop on allocation failure,
i.e. why the function won't get stuck in an infinite loop.

Reported-by: Yajun Deng <yajun.deng@linux.dev>
Cc: stable@vger.kernel.org
Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/x86/kernel/kvm.c