From 82b89fd04c7b3b15d6977e2bbb023a2cd8a108b5 Mon Sep 17 00:00:00 2001 From: Yonghua Huang Date: Tue, 7 Jan 2020 11:44:17 +0800 Subject: [PATCH] hv: check the validity of 'pdev' in 'set_ptdev_intr_info' This patch checks the validity of 'vdev->pdev' to ensure physical device is linked to 'vdev'. this check is to avoid some potential hypervisor crash when destroying VM with crafted input. Tracked-On: #4336 Signed-off-by: Yonghua Huang Reviewed-by: Fei Li --- hypervisor/dm/vpci/vpci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hypervisor/dm/vpci/vpci.c b/hypervisor/dm/vpci/vpci.c index fffcdecbe..cb0c37f41 100644 --- a/hypervisor/dm/vpci/vpci.c +++ b/hypervisor/dm/vpci/vpci.c @@ -581,7 +581,7 @@ void vpci_set_ptdev_intr_info(struct acrn_vm *target_vm, uint16_t vbdf, uint16_t sos_vm = get_sos_vm(); spinlock_obtain(&sos_vm->vpci.lock); vdev = pci_find_vdev(&sos_vm->vpci, bdf); - if (vdev == NULL) { + if ((vdev == NULL) || (vdev->pdev == NULL)) { pr_err("%s, can't find PCI device for vm%d, vbdf (0x%x) pbdf (0x%x)", __func__, target_vm->vm_id, vbdf, pbdf); } else {