Commit a4e7728
PCI: Add missing bridge lock to pci_bus_lock()
One of the true positives that the cfg_access_lock lockdep effort
identified is this sequence:
WARNING: CPU: 14 PID: 1 at drivers/pci/pci.c:4886 pci_bridge_secondary_bus_reset+0x5d/0x70
RIP: 0010:pci_bridge_secondary_bus_reset+0x5d/0x70
Call Trace:
<TASK>
? __warn+0x8c/0x190
? pci_bridge_secondary_bus_reset+0x5d/0x70
? report_bug+0x1f8/0x200
? handle_bug+0x3c/0x70
? exc_invalid_op+0x18/0x70
? asm_exc_invalid_op+0x1a/0x20
? pci_bridge_secondary_bus_reset+0x5d/0x70
pci_reset_bus+0x1d8/0x270
vmd_probe+0x778/0xa10
pci_device_probe+0x95/0x120
Where pci_reset_bus() users are triggering unlocked secondary bus resets.
Ironically pci_bus_reset(), several calls down from pci_reset_bus(), uses
pci_bus_lock() before issuing the reset which locks everything *but* the
bridge itself.
For the same motivation as adding:
bridge = pci_upstream_bridge(dev);
if (bridge)
pci_dev_lock(bridge);
to pci_reset_function() for the "bus" and "cxl_bus" reset cases, add
pci_dev_lock() for @bus->self to pci_bus_lock().
Link: https://lore.kernel.org/r/171711747501.1628941.15217746952476635316.stgit@dwillia2-xfh.jf.intel.com
Reported-by: Imre Deak <imre.deak@intel.com>
Closes: http://lore.kernel.org/r/6657833b3b5ae_14984b29437@dwillia2-xfh.jf.intel.com.notmuch
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Keith Busch <kbusch@kernel.org>
[bhelgaas: squash in recursive locking deadlock fix from Keith Busch:
https://lore.kernel.org/r/20240711193650.701834-1-kbusch@meta.com]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Tested-by: Hans de Goede <hdegoede@redhat.com>
Tested-by: Kalle Valo <kvalo@kernel.org>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>1 parent 920f646 commit a4e7728
1 file changed
Lines changed: 21 additions & 14 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5445 | 5445 | | |
5446 | 5446 | | |
5447 | 5447 | | |
| 5448 | + | |
5448 | 5449 | | |
5449 | | - | |
5450 | 5450 | | |
5451 | 5451 | | |
| 5452 | + | |
| 5453 | + | |
5452 | 5454 | | |
5453 | 5455 | | |
5454 | 5456 | | |
| |||
5460 | 5462 | | |
5461 | 5463 | | |
5462 | 5464 | | |
5463 | | - | |
| 5465 | + | |
| 5466 | + | |
5464 | 5467 | | |
| 5468 | + | |
5465 | 5469 | | |
5466 | 5470 | | |
5467 | 5471 | | |
5468 | 5472 | | |
5469 | 5473 | | |
5470 | 5474 | | |
5471 | 5475 | | |
| 5476 | + | |
| 5477 | + | |
| 5478 | + | |
5472 | 5479 | | |
5473 | | - | |
5474 | | - | |
5475 | 5480 | | |
5476 | | - | |
5477 | | - | |
| 5481 | + | |
5478 | 5482 | | |
5479 | | - | |
5480 | | - | |
| 5483 | + | |
| 5484 | + | |
5481 | 5485 | | |
5482 | 5486 | | |
5483 | 5487 | | |
5484 | 5488 | | |
5485 | 5489 | | |
5486 | 5490 | | |
5487 | 5491 | | |
5488 | | - | |
| 5492 | + | |
| 5493 | + | |
5489 | 5494 | | |
| 5495 | + | |
5490 | 5496 | | |
5491 | 5497 | | |
5492 | 5498 | | |
| |||
5518 | 5524 | | |
5519 | 5525 | | |
5520 | 5526 | | |
5521 | | - | |
5522 | 5527 | | |
5523 | 5528 | | |
| 5529 | + | |
| 5530 | + | |
5524 | 5531 | | |
5525 | 5532 | | |
5526 | 5533 | | |
| |||
5546 | 5553 | | |
5547 | 5554 | | |
5548 | 5555 | | |
5549 | | - | |
5550 | | - | |
5551 | 5556 | | |
5552 | 5557 | | |
5553 | 5558 | | |
5554 | 5559 | | |
5555 | 5560 | | |
5556 | | - | |
| 5561 | + | |
| 5562 | + | |
5557 | 5563 | | |
5558 | 5564 | | |
5559 | 5565 | | |
| |||
5564 | 5570 | | |
5565 | 5571 | | |
5566 | 5572 | | |
5567 | | - | |
| 5573 | + | |
| 5574 | + | |
5568 | 5575 | | |
5569 | 5576 | | |
5570 | 5577 | | |
| |||
0 commit comments