Merge branch 'pci/misc'
authorBjorn Helgaas <bhelgaas@google.com>
Tue, 15 Dec 2020 21:11:08 +0000 (15:11 -0600)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 15 Dec 2020 21:11:08 +0000 (15:11 -0600)
- Update kernel-doc to match function prototypes (Mauro Carvalho Chehab)

- Bounds-check "pci=resource_alignment=" requests (Bjorn Helgaas)

- Fix integer overflow in "pci=resource_alignment=" requests (Colin Ian
  King)

- Remove unused HAVE_PCI_SET_MWI definition (Heiner Kallweit)

- Reduce pci_set_cacheline_size() message to debug level (Heiner Kallweit)

* pci/misc:
  PCI: Reduce pci_set_cacheline_size() message to debug level
  PCI: Remove unused HAVE_PCI_SET_MWI
  PCI: Fix overflow in command-line resource alignment requests
  PCI: Bounds-check command-line resource alignment requests
  PCI: Fix kernel-doc markup

# Conflicts:
# drivers/pci/pci-driver.c

1  2 
drivers/pci/pci-driver.c
drivers/pci/pci.c
drivers/pci/probe.c
drivers/pci/slot.c
include/linux/pci.h

@@@ -89,81 -89,8 +89,81 @@@ static void pci_free_dynids(struct pci_
        spin_unlock(&drv->dynids.lock);
  }
  
 +/**
 + * pci_match_id - See if a PCI device matches a given pci_id table
 + * @ids: array of PCI device ID structures to search in
 + * @dev: the PCI device structure to match against.
 + *
 + * Used by a driver to check whether a PCI device is in its list of
 + * supported devices.  Returns the matching pci_device_id structure or
 + * %NULL if there is no match.
 + *
 + * Deprecated; don't use this as it will not catch any dynamic IDs
 + * that a driver might want to check for.
 + */
 +const struct pci_device_id *pci_match_id(const struct pci_device_id *ids,
 +                                       struct pci_dev *dev)
 +{
 +      if (ids) {
 +              while (ids->vendor || ids->subvendor || ids->class_mask) {
 +                      if (pci_match_one_device(ids, dev))
 +                              return ids;
 +                      ids++;
 +              }
 +      }
 +      return NULL;
 +}
 +EXPORT_SYMBOL(pci_match_id);
 +
 +static const struct pci_device_id pci_device_id_any = {
 +      .vendor = PCI_ANY_ID,
 +      .device = PCI_ANY_ID,
 +      .subvendor = PCI_ANY_ID,
 +      .subdevice = PCI_ANY_ID,
 +};
 +
 +/**
 + * pci_match_device - See if a device matches a driver's list of IDs
 + * @drv: the PCI driver to match against
 + * @dev: the PCI device structure to match against
 + *
 + * Used by a driver to check whether a PCI device is in its list of
 + * supported devices or in the dynids list, which may have been augmented
 + * via the sysfs "new_id" file.  Returns the matching pci_device_id
 + * structure or %NULL if there is no match.
 + */
 +static const struct pci_device_id *pci_match_device(struct pci_driver *drv,
 +                                                  struct pci_dev *dev)
 +{
 +      struct pci_dynid *dynid;
 +      const struct pci_device_id *found_id = NULL;
 +
 +      /* When driver_override is set, only bind to the matching driver */
 +      if (dev->driver_override && strcmp(dev->driver_override, drv->name))
 +              return NULL;
 +
 +      /* Look at the dynamic ids first, before the static ones */
 +      spin_lock(&drv->dynids.lock);
 +      list_for_each_entry(dynid, &drv->dynids.list, node) {
 +              if (pci_match_one_device(&dynid->id, dev)) {
 +                      found_id = &dynid->id;
 +                      break;
 +              }
 +      }
 +      spin_unlock(&drv->dynids.lock);
 +
 +      if (!found_id)
 +              found_id = pci_match_id(drv->id_table, dev);
 +
 +      /* driver_override will always match, send a dummy id */
 +      if (!found_id && dev->driver_override)
 +              found_id = &pci_device_id_any;
 +
 +      return found_id;
 +}
 +
  /**
-  * store_new_id - sysfs frontend to pci_add_dynid()
+  * new_id_store - sysfs frontend to pci_add_dynid()
   * @driver: target device driver
   * @buf: buffer for scanning device ID data
   * @count: input size
Simple merge
Simple merge
Simple merge
Simple merge