On Thu, Aug 07, 2025 at 07:43:17PM +0200, Nam Cao wrote: > Bjorn Helgaas <helgaas@xxxxxxxxxx> writes: > > On Thu, Aug 07, 2025 at 10:10:51AM +0200, Nam Cao wrote: > >> vmd_msi_alloc() allocates struct vmd_irq and stashes it into > >> irq_data->chip_data associated with the VMD's interrupt domain. > >> vmd_msi_free() extracts the pointer by calling irq_get_chip_data() and > >> frees it. > >> > >> irq_get_chip_data() returns the chip_data associated with the top interrupt > >> domain. This worked in the past, because VMD's interrupt domain was the top > >> domain. > >> > >> But since commit d7d8ab87e3e7 ("PCI: vmd: Switch to > >> msi_create_parent_irq_domain()") changed the interrupt domain hierarchy, > >> VMD's interrupt domain is not the top domain anymore. irq_get_chip_data() > >> now returns the chip_data at the MSI devices' interrupt domains. It is > >> therefore broken for vmd_msi_free() to kfree() this chip_data. > >> > >> Fix this issue, correctly extract the chip_data associated with the VMD's > >> interrupt domain. > ... > > > > Applied to pci/for-linus for v6.17, thanks! > > > > I assume you checked the other msi_create_parent_irq_domain() changes > > for similar problems? > > Not before you reminded me :( > > But yes, none of the similar PCI patches has the same problem. Great, thanks for checking! I'll try to get this in before v6.17-rc1 since many people will start using that. Bjorn