struct edd_info *info = edd_dev_get_info(edev);
 
        if (edd_dev_is_type(edev, "PCI")) {
-               return pci_find_slot(info->params.interface_path.pci.bus,
+               return pci_get_bus_and_slot(info->params.interface_path.pci.bus,
                                     PCI_DEVFN(info->params.interface_path.pci.slot,
                                               info->params.interface_path.pci.
                                               function));
 {
 
        struct pci_dev *pci_dev = edd_get_pci_dev(edev);
+       int ret;
        if (!pci_dev)
                return 1;
-       return sysfs_create_link(&edev->kobj,&pci_dev->dev.kobj,"pci_dev");
+       ret = sysfs_create_link(&edev->kobj,&pci_dev->dev.kobj,"pci_dev");
+       pci_dev_put(pci_dev);
+       return ret;
 }
 
 static inline void