From c937035a5d644dd710126769f1cf7787aab023dc Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Sat, 10 Jun 2023 08:15:17 +0000 Subject: [PATCH] Revert "KVM: arm64: vgic: Don't acquire its_lock before config_lock" This reverts commit 5bd77c2393393a5003dc831d17a7adc2fc005f8e. It breaks the Android kernel ABI at this point in time, so needs to be dropped. If it is needed, it can come back in an ABI-safe way in the future. Bug: 161946584 Cc: Will Deacon Change-Id: I881c1b7c6a8f1e31c32cd3f687da13b5dccc0b4b Signed-off-by: Greg Kroah-Hartman --- arch/arm64/kvm/vgic/vgic-its.c | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/arch/arm64/kvm/vgic/vgic-its.c b/arch/arm64/kvm/vgic/vgic-its.c index c9a03033d507..adc1c4a8f8ae 100644 --- a/arch/arm64/kvm/vgic/vgic-its.c +++ b/arch/arm64/kvm/vgic/vgic-its.c @@ -1958,16 +1958,6 @@ static int vgic_its_create(struct kvm_device *dev, u32 type) mutex_init(&its->its_lock); mutex_init(&its->cmd_lock); - /* Yep, even more trickery for lock ordering... */ -#ifdef CONFIG_LOCKDEP - mutex_lock(&dev->kvm->arch.config_lock); - mutex_lock(&its->cmd_lock); - mutex_lock(&its->its_lock); - mutex_unlock(&its->its_lock); - mutex_unlock(&its->cmd_lock); - mutex_unlock(&dev->kvm->arch.config_lock); -#endif - its->vgic_its_base = VGIC_ADDR_UNDEF; INIT_LIST_HEAD(&its->device_list); @@ -2762,14 +2752,15 @@ static int vgic_its_ctrl(struct kvm *kvm, struct vgic_its *its, u64 attr) return 0; mutex_lock(&kvm->lock); + mutex_lock(&its->its_lock); if (!lock_all_vcpus(kvm)) { + mutex_unlock(&its->its_lock); mutex_unlock(&kvm->lock); return -EBUSY; } mutex_lock(&kvm->arch.config_lock); - mutex_lock(&its->its_lock); switch (attr) { case KVM_DEV_ARM_ITS_CTRL_RESET: @@ -2783,9 +2774,9 @@ static int vgic_its_ctrl(struct kvm *kvm, struct vgic_its *its, u64 attr) break; } - mutex_unlock(&its->its_lock); mutex_unlock(&kvm->arch.config_lock); unlock_all_vcpus(kvm); + mutex_unlock(&its->its_lock); mutex_unlock(&kvm->lock); return ret; }