diff --git a/drivers/xen/xen-pciback/pci_stub.c b/drivers/xen/xen-pciback/pci_stub.c index 7de2fa67743c61..ce2bbe6a075735 100644 --- a/drivers/xen/xen-pciback/pci_stub.c +++ b/drivers/xen/xen-pciback/pci_stub.c @@ -150,13 +150,13 @@ static void pcistub_device_release(struct kref *kref) /* Disable the device */ xen_pcibk_reset_device(dev); - kfree(dev_data); - pci_set_drvdata(dev, NULL); - - /* Clean-up the device */ + /* Clean-up the device. Both find the fields through drvdata. */ xen_pcibk_config_free_dyn_fields(dev); xen_pcibk_config_free_dev(dev); + kfree(dev_data); + pci_set_drvdata(dev, NULL); + pci_clear_dev_assigned(dev); pci_dev_put(dev);