Messages in this thread Patch in this message | | | From | linmiaohe <> | Subject | [PATCH] KVM: vgic: Fix potential double free dist->spis in __kvm_vgic_destroy() | Date | Thu, 28 Nov 2019 14:38:48 +0800 |
| |
From: Miaohe Lin <linmiaohe@huawei.com>
In kvm_vgic_dist_init() called from kvm_vgic_map_resources(), if dist->vgic_model is invalid, dist->spis will be freed without set dist->spis = NULL. And in vgicv2 resources clean up path, __kvm_vgic_destroy() will be called to free allocated resources. And dist->spis will be freed again in clean up chain because we forget to set dist->spis = NULL in kvm_vgic_dist_init() failed path. So double free would happen.
Signed-off-by: Miaohe Lin <linmiaohe@huawei.com> --- virt/kvm/arm/vgic/vgic-init.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/virt/kvm/arm/vgic/vgic-init.c b/virt/kvm/arm/vgic/vgic-init.c index 53e3969dfb52..c17c29beeb72 100644 --- a/virt/kvm/arm/vgic/vgic-init.c +++ b/virt/kvm/arm/vgic/vgic-init.c @@ -171,6 +171,7 @@ static int kvm_vgic_dist_init(struct kvm *kvm, unsigned int nr_spis) break; default: kfree(dist->spis); + dist->spis = NULL; return -EINVAL; } } -- 2.19.1
| |