KVM: Add helpers to wrap vcpu->srcu_idx and yell if it's abused
Add wrappers to acquire/release KVM's SRCU lock when stashing the index in vcpu->src_idx, along with rudimentary detection of illegal usage, e.g. re-acquiring SRCU and thus overwriting vcpu->src_idx. Because the SRCU index is (currently) either 0 or 1, illegal nesting bugs can go unnoticed for quite some time and only cause problems when the nested lock happens to get a different index. Wrap the WARNs in PROVE_RCU=y, and make them ONCE, otherwise KVM will likely yell so loudly that it will bring the kernel to its knees. Signed-off-by:Sean Christopherson <seanjc@google.com> Tested-by:
Fabiano Rosas <farosas@linux.ibm.com> Message-Id: <20220415004343.2203171-4-seanjc@google.com> Signed-off-by:
Paolo Bonzini <pbonzini@redhat.com>
Showing
- arch/powerpc/kvm/book3s_64_mmu_radix.c 5 additions, 4 deletionsarch/powerpc/kvm/book3s_64_mmu_radix.c
- arch/powerpc/kvm/book3s_hv_nested.c 8 additions, 8 deletionsarch/powerpc/kvm/book3s_hv_nested.c
- arch/powerpc/kvm/book3s_rtas.c 2 additions, 2 deletionsarch/powerpc/kvm/book3s_rtas.c
- arch/powerpc/kvm/powerpc.c 2 additions, 2 deletionsarch/powerpc/kvm/powerpc.c
- arch/riscv/kvm/vcpu.c 8 additions, 8 deletionsarch/riscv/kvm/vcpu.c
- arch/riscv/kvm/vcpu_exit.c 2 additions, 2 deletionsarch/riscv/kvm/vcpu_exit.c
- arch/s390/kvm/interrupt.c 2 additions, 2 deletionsarch/s390/kvm/interrupt.c
- arch/s390/kvm/kvm-s390.c 4 additions, 4 deletionsarch/s390/kvm/kvm-s390.c
- arch/s390/kvm/vsie.c 2 additions, 2 deletionsarch/s390/kvm/vsie.c
- arch/x86/kvm/x86.c 13 additions, 15 deletionsarch/x86/kvm/x86.c
- include/linux/kvm_host.h 23 additions, 1 deletioninclude/linux/kvm_host.h
Please register or sign in to comment