diff options
author | Marc Zyngier <marc.zyngier@arm.com> | 2017-01-12 09:21:56 +0000 |
---|---|---|
committer | Marc Zyngier <marc.zyngier@arm.com> | 2017-01-13 11:19:35 +0000 |
commit | 1193e6aeecb36c74c48c7cd0f641acbbed9ddeef (patch) | |
tree | 37d742ae587ab033d9b3a961cf7fbae85c294df0 /virt/kvm/arm/vgic/vgic-v2.c | |
parent | 488f94d7212b00a2ec72fb886b155f1b04c5aa98 (diff) | |
download | linux-1193e6aeecb36c74c48c7cd0f641acbbed9ddeef.tar.bz2 |
KVM: arm/arm64: vgic: Fix deadlock on error handling
Dmitry Vyukov reported that the syzkaller fuzzer triggered a
deadlock in the vgic setup code when an error was detected, as
the cleanup code tries to take a lock that is already held by
the setup code.
The fix is to avoid retaking the lock when cleaning up, by
telling the cleanup function that we already hold it.
Cc: stable@vger.kernel.org
Reported-by: Dmitry Vyukov <dvyukov@google.com>
Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Diffstat (limited to 'virt/kvm/arm/vgic/vgic-v2.c')
-rw-r--r-- | virt/kvm/arm/vgic/vgic-v2.c | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/virt/kvm/arm/vgic/vgic-v2.c b/virt/kvm/arm/vgic/vgic-v2.c index 9bab86757fa4..834137e7b83f 100644 --- a/virt/kvm/arm/vgic/vgic-v2.c +++ b/virt/kvm/arm/vgic/vgic-v2.c @@ -293,8 +293,6 @@ int vgic_v2_map_resources(struct kvm *kvm) dist->ready = true; out: - if (ret) - kvm_vgic_destroy(kvm); return ret; } |