OSDN Git Service

PCI: Fix "try" semantics of bus and slot reset
authorAlex Williamson <alex.williamson@redhat.com>
Mon, 18 Feb 2019 19:46:46 +0000 (12:46 -0700)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 5 Mar 2019 21:20:02 +0000 (15:20 -0600)
commitddefc033eecf23f1e8b81d0663c5db965adf5516
treebef3d114a1d8bf78c65ea5066e000c33e70772d1
parent20a796a969efe37c2dd38b72538407e544f41de4
PCI: Fix "try" semantics of bus and slot reset

The commit referenced below introduced device locking around save and
restore of state for each device during a PCI bus "try" reset, making it
decidely non-"try" and prone to deadlock in the event that a device is
already locked.  Restore __pci_reset_bus() and __pci_reset_slot() to their
advertised locking semantics by pushing the save and restore functions into
the branch where the entire tree is already locked.  Extend the helper
function names with "_locked" and update the comment to reflect this
calling requirement.

Fixes: b014e96d1abb ("PCI: Protect pci_error_handlers->reset_notify() usage with device_lock()")
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Sinan Kaya <okaya@kernel.org>
drivers/pci/pci.c