]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
PCI: Use device_lock_assert() to verify device lock is held
authorIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Fri, 16 Jan 2026 12:57:41 +0000 (14:57 +0200)
committerBjorn Helgaas <bhelgaas@google.com>
Fri, 6 Feb 2026 22:53:57 +0000 (16:53 -0600)
Multiple function comments say the function should be called with
device_lock held. Check that by calling device_lock_assert().

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Link: https://patch.msgid.link/20260116125742.1890-3-ilpo.jarvinen@linux.intel.com
drivers/pci/pci.c

index edcc22dc95d39347e5240f88e2f1596f04c78e65..5c109f62eb4ae31b0b6f27a78f20d0d898c55cbe 100644 (file)
@@ -4970,6 +4970,7 @@ static void pci_dev_save_and_disable(struct pci_dev *dev)
         * races with ->remove() by the device lock, which must be held by
         * the caller.
         */
+       device_lock_assert(&dev->dev);
        if (err_handler && err_handler->reset_prepare)
                err_handler->reset_prepare(dev);
        else if (dev->driver)
@@ -5040,7 +5041,9 @@ const struct pci_reset_fn_method pci_reset_fn_methods[] = {
  * device including MSI, bus mastering, BARs, decoding IO and memory spaces,
  * etc.
  *
- * Returns 0 if the device function was successfully reset or negative if the
+ * Context: The caller must hold the device lock.
+ *
+ * Return: 0 if the device function was successfully reset or negative if the
  * device doesn't support resetting a single function.
  */
 int __pci_reset_function_locked(struct pci_dev *dev)
@@ -5049,6 +5052,7 @@ int __pci_reset_function_locked(struct pci_dev *dev)
        const struct pci_reset_fn_method *method;
 
        might_sleep();
+       device_lock_assert(&dev->dev);
 
        /*
         * A reset method returns -ENOTTY if it doesn't support this device and
@@ -5171,13 +5175,17 @@ EXPORT_SYMBOL_GPL(pci_reset_function);
  * over the reset.  It also differs from pci_reset_function() in that it
  * requires the PCI device lock to be held.
  *
- * Returns 0 if the device function was successfully reset or negative if the
+ * Context: The caller must hold the device lock.
+ *
+ * Return: 0 if the device function was successfully reset or negative if the
  * device doesn't support resetting a single function.
  */
 int pci_reset_function_locked(struct pci_dev *dev)
 {
        int rc;
 
+       device_lock_assert(&dev->dev);
+
        if (!pci_reset_supported(dev))
                return -ENOTTY;