linux/arch/riscv
Anup Patel be82abe6a7 RISC-V: KVM: Fix SRCU deadlock caused by kvm_riscv_check_vcpu_requests()
The kvm_riscv_check_vcpu_requests() is called with SRCU read lock held
and for KVM_REQ_SLEEP request it will block the VCPU without releasing
SRCU read lock. This causes KVM ioctls (such as KVM_IOEVENTFD) from
other VCPUs of the same Guest/VM to hang/deadlock if there is any
synchronize_srcu() or synchronize_srcu_expedited() in the path.

To fix the above in kvm_riscv_check_vcpu_requests(), we should do SRCU
read unlock before blocking the VCPU and do SRCU read lock after VCPU
wakeup.

Fixes: cce69aff68 ("RISC-V: KVM: Implement VCPU interrupts and requests handling")
Reported-by: Bin Meng <bmeng.cn@gmail.com>
Signed-off-by: Anup Patel <apatel@ventanamicro.com>
Reviewed-by: Atish Patra <atishp@rivosinc.com>
Tested-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Tested-by: Bin Meng <bmeng.cn@gmail.com>
Signed-off-by: Anup Patel <anup@brainfault.org>
2022-07-11 09:36:32 +05:30
..
boot riscv: dts: microchip: re-add pdma to mpfs device tree 2022-06-12 19:33:52 +01:00
configs RISC-V: configs: Configs that had RPMSG_CHAR now get RPMSG_CTRL 2022-04-26 08:19:53 -07:00
errata riscv: add memory-type errata for T-Head 2022-05-11 21:36:33 -07:00
include riscv: Fix missing PAGE_PFN_MASK 2022-07-11 09:33:35 +05:30
kernel riscv: drop cpufeature_apply_feature tracking variable 2022-06-16 15:47:31 -07:00
kvm RISC-V: KVM: Fix SRCU deadlock caused by kvm_riscv_check_vcpu_requests() 2022-07-11 09:36:32 +05:30
lib riscv: Fixed misaligned memory access. Fixed pointer comparison. 2022-03-10 10:24:04 -08:00
mm riscv: mm: init: make pt_ops_set_[early|late|fixmap] static 2022-06-02 14:50:41 -07:00
net riscv, bpf: Implement more atomic operations for RV64 2022-04-11 16:54:54 +02:00
purgatory RISC-V: Add purgatory 2022-05-19 12:18:59 -07:00
Kbuild riscv: move errata/ and kvm/ builds to arch/riscv/Kbuild 2022-06-01 22:26:32 -07:00
Kconfig riscv: Improve description for RISCV_ISA_SVPBMT Kconfig symbol 2022-06-16 15:47:39 -07:00
Kconfig.debug RISC-V: Remove EARLY_PRINTK support 2018-12-17 10:23:46 -08:00
Kconfig.erratas riscv: fix dependency for t-head errata 2022-06-16 15:42:55 -07:00
Kconfig.socs RISC-V Patches for the 5.19 Merge Window, Part 1 2022-05-31 14:10:54 -07:00
Makefile riscv: move errata/ and kvm/ builds to arch/riscv/Kbuild 2022-06-01 22:26:32 -07:00