Commit c7af9a65 authored by Sean Christopherson's avatar Sean Christopherson Committed by Zheng Yejian
Browse files

KVM: Stop looking for coalesced MMIO zones if the bus is destroyed

mainline inclusion
from mainline-v5.13-rc1
commit 5d3c4c79
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I94VOT
CVE: CVE-2021-47060

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5d3c4c79384af06e3c8e25b7770b6247496b4417



---------------------------

Abort the walk of coalesced MMIO zones if kvm_io_bus_unregister_dev()
fails to allocate memory for the new instance of the bus.  If it can't
instantiate a new bus, unregister_dev() destroys all devices _except_ the
target device.   But, it doesn't tell the caller that it obliterated the
bus and invoked the destructor for all devices that were on the bus.  In
the coalesced MMIO case, this can result in a deleted list entry
dereference due to attempting to continue iterating on coalesced_zones
after future entries (in the walk) have been deleted.

Opportunistically add curly braces to the for-loop, which encompasses
many lines but sneaks by without braces due to the guts being a single
if statement.

Fixes: f6588660 ("KVM: fix memory leak in kvm_io_bus_unregister_dev()")
Cc: stable@vger.kernel.org
Reported-by: default avatarHao Sun <sunhao.th@gmail.com>
Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
Message-Id: <20210412222050.876100-3-seanjc@google.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
Signed-off-by: default avatarZheng Yejian <zhengyejian1@huawei.com>
parent 415aa2f1
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment