diff options
author | Michal Luczaj <mhal@rbox.co> | 2022-10-13 21:12:19 +0000 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2022-10-27 06:47:53 -0400 |
commit | 52491a38b2c2411f3f0229dc6ad610349c704a41 (patch) | |
tree | 5cb93429b46eebe321ca3769e655d8508331ab23 /drivers/regulator/anatop-regulator.c | |
parent | 1c1a41497ab879ac9608f3047f230af833eeef3d (diff) | |
download | linux-52491a38b2c2411f3f0229dc6ad610349c704a41.tar.bz2 |
KVM: Initialize gfn_to_pfn_cache locks in dedicated helper
Move the gfn_to_pfn_cache lock initialization to another helper and
call the new helper during VM/vCPU creation. There are race
conditions possible due to kvm_gfn_to_pfn_cache_init()'s
ability to re-initialize the cache's locks.
For example: a race between ioctl(KVM_XEN_HVM_EVTCHN_SEND) and
kvm_gfn_to_pfn_cache_init() leads to a corrupted shinfo gpc lock.
(thread 1) | (thread 2)
|
kvm_xen_set_evtchn_fast |
read_lock_irqsave(&gpc->lock, ...) |
| kvm_gfn_to_pfn_cache_init
| rwlock_init(&gpc->lock)
read_unlock_irqrestore(&gpc->lock, ...) |
Rename "cache_init" and "cache_destroy" to activate+deactivate to
avoid implying that the cache really is destroyed/freed.
Note, there more races in the newly named kvm_gpc_activate() that will
be addressed separately.
Fixes: 982ed0de4753 ("KVM: Reinstate gfn_to_pfn_cache with invalidation support")
Cc: stable@vger.kernel.org
Suggested-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Michal Luczaj <mhal@rbox.co>
[sean: call out that this is a bug fix]
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20221013211234.1318131-2-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'drivers/regulator/anatop-regulator.c')
0 files changed, 0 insertions, 0 deletions