On 20.02.19 06:06, Flynn Xu wrote:
Hi,
The function */pci_get_domain_bus_and_slot /*will increase the reference count,
and the caller must decrement the reference
count by calling */pci_dev_put, /*so is there a potential memory leak?
After add pci_dev_put, the counter decreased back to 0 when remove pci devices..
*//*
diff --git a/driver/pci.c b/driver/pci.c
index 8ba74bfd..7d060221 100644
--- a/driver/pci.c
+++ b/driver/pci.c
@@ -103,8 +103,12 @@ static void jailhouse_pci_remove_device(const struct
jailhouse_pci_device *dev)
l_dev = pci_get_domain_bus_and_slot(dev->domain, PCI_BUS_NUM(dev->bdf),
dev->bdf & 0xff);
- if (l_dev)
- pci_stop_and_remove_bus_device_locked(l_dev);
+ if (l_dev) {
+ pci_lock_rescan_remove();
+ pci_stop_and_remove_bus_device(l_dev);
+ pci_dev_put(l_dev);
+ pci_unlock_rescan_remove();
Good catch!
But rather than the open-coded pci_lock_rescan_remove, isn't
pci_stop_and_remove_bus_device_locked() the right thing? Or should we rather
lock the whole procedure, including pci_get_domain_bus_and_slot? Please make
sure to provide some reasoning for that when writing a patch.
TIA!
Jan
--
Siemens AG, Corporate Technology, CT RDA IOT SES-DE
Corporate Competence Center Embedded Linux
--
You received this message because you are subscribed to the Google Groups
"Jailhouse" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.