On 14.04.2023 22:29, Stewart Hildebrand wrote: > The list was not being initialized, which could result in a crash in > vpci_remove_device if no list items were added.
Can you please point out the code path which may lead to such a crash? > --- a/xen/drivers/vpci/msix.c > +++ b/xen/drivers/vpci/msix.c > @@ -678,6 +678,8 @@ static int cf_check init_msix(struct pci_dev *pdev) > if ( !msix ) > return -ENOMEM; > > + INIT_LIST_HEAD(&msix->next); > + > rc = vpci_add_register(pdev->vpci, control_read, control_write, > msix_control_reg(msix_offset), 2, msix); > if ( rc ) The error path below here frees msix again, so can't be a problem. The only other return path from the function is after a suitable list_add(). "... if no list items were added" is misleading too - this isn't a list head, but a list element. The list head is d->arch.hvm.msix_tables. Jan
