Merge branch 'pci/feng-avoid-kmalloc' into next
[cascardo/linux.git] / drivers / pci / search.c
index d84cdcf..bf969ba 100644 (file)
@@ -243,30 +243,14 @@ struct pci_dev *pci_get_subsys(unsigned int vendor, unsigned int device,
                               unsigned int ss_vendor, unsigned int ss_device,
                               struct pci_dev *from)
 {
-       struct pci_dev *pdev;
-       struct pci_device_id *id;
-
-       /*
-        * pci_find_subsys() can be called on the ide_setup() path,
-        * super-early in boot.  But the down_read() will enable local
-        * interrupts, which can cause some machines to crash.  So here we
-        * detect and flag that situation and bail out early.
-        */
-       if (unlikely(no_pci_devices()))
-               return NULL;
-
-       id = kzalloc(sizeof(*id), GFP_KERNEL);
-       if (!id)
-               return NULL;
-       id->vendor = vendor;
-       id->device = device;
-       id->subvendor = ss_vendor;
-       id->subdevice = ss_device;
-
-       pdev = pci_get_dev_by_id(id, from);
-       kfree(id);
-
-       return pdev;
+       struct pci_device_id id = {
+               .vendor = vendor,
+               .device = device,
+               .subvendor = ss_vendor,
+               .subdevice = ss_device,
+       };
+
+       return pci_get_dev_by_id(&id, from);
 }
 
 /**
@@ -305,19 +289,16 @@ pci_get_device(unsigned int vendor, unsigned int device, struct pci_dev *from)
  */
 struct pci_dev *pci_get_class(unsigned int class, struct pci_dev *from)
 {
-       struct pci_dev *dev;
-       struct pci_device_id *id;
-
-       id = kzalloc(sizeof(*id), GFP_KERNEL);
-       if (!id)
-               return NULL;
-       id->vendor = id->device = id->subvendor = id->subdevice = PCI_ANY_ID;
-       id->class_mask = PCI_ANY_ID;
-       id->class = class;
-
-       dev = pci_get_dev_by_id(id, from);
-       kfree(id);
-       return dev;
+       struct pci_device_id id = {
+               .vendor = PCI_ANY_ID,
+               .device = PCI_ANY_ID,
+               .subvendor = PCI_ANY_ID,
+               .subdevice = PCI_ANY_ID,
+               .class_mask = PCI_ANY_ID,
+               .class = class,
+       };
+
+       return pci_get_dev_by_id(&id, from);
 }
 
 /**