drivers/pci/pci.c | 1 - 1 file changed, 1 deletion(-)
Commit a4e772898f8b ("PCI: Add missing bridge lock to pci_bus_lock()")
delegates the bridge device's pci_dev_trylock() to pci_bus_trylock()
in pci_slot_trylock(), but it leaves a redundant pci_dev_unlock() when
pci_bus_trylock() fails.
Remove the redundant bridge-device pci_dev_unlock() in pci_slot_trylock(),
since that lock is no longer taken there.
Fixes: a4e772898f8b ("PCI: Add missing bridge lock to pci_bus_lock()")
Cc: stable@vger.kernel.org
Signed-off-by: Jinhui Guo <guojinhui.liam@bytedance.com>
---
drivers/pci/pci.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 13dbb405dc31..75a98819db6f 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -5347,7 +5347,6 @@ static int pci_slot_trylock(struct pci_slot *slot)
continue;
if (dev->subordinate) {
if (!pci_bus_trylock(dev->subordinate)) {
- pci_dev_unlock(dev);
goto unlock;
}
} else if (!pci_dev_trylock(dev))
--
2.20.1
On Thu, 11 Dec 2025, Jinhui Guo wrote:
> Commit a4e772898f8b ("PCI: Add missing bridge lock to pci_bus_lock()")
> delegates the bridge device's pci_dev_trylock() to pci_bus_trylock()
> in pci_slot_trylock(), but it leaves a redundant pci_dev_unlock() when
> pci_bus_trylock() fails.
>
> Remove the redundant bridge-device pci_dev_unlock() in pci_slot_trylock(),
> since that lock is no longer taken there.
Doesn't it cause issues if trying to unlock something that wasn't locked
so saying its "redundant" seem a bit an understatement?
> Fixes: a4e772898f8b ("PCI: Add missing bridge lock to pci_bus_lock()")
> Cc: stable@vger.kernel.org
> Signed-off-by: Jinhui Guo <guojinhui.liam@bytedance.com>
> ---
> drivers/pci/pci.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> index 13dbb405dc31..75a98819db6f 100644
> --- a/drivers/pci/pci.c
> +++ b/drivers/pci/pci.c
> @@ -5347,7 +5347,6 @@ static int pci_slot_trylock(struct pci_slot *slot)
> continue;
> if (dev->subordinate) {
> if (!pci_bus_trylock(dev->subordinate)) {
> - pci_dev_unlock(dev);
> goto unlock;
> }
> } else if (!pci_dev_trylock(dev))
>
--
i.
On Thu, Dec 11, 2025 20:13:59 +0200, Ilpo Järvinen wrote:
> > Commit a4e772898f8b ("PCI: Add missing bridge lock to pci_bus_lock()")
> > delegates the bridge device's pci_dev_trylock() to pci_bus_trylock()
> > in pci_slot_trylock(), but it leaves a redundant pci_dev_unlock() when
> > pci_bus_trylock() fails.
> >
> > Remove the redundant bridge-device pci_dev_unlock() in pci_slot_trylock(),
> > since that lock is no longer taken there.
>
> Doesn't it cause issues if trying to unlock something that wasn't locked
> so saying its "redundant" seem a bit an understatement?
Hi, Ilpo Järvinen
Thanks for your time. The commit message was a bit brief, so I've sent v2
https://lore.kernel.org/all/20251212133737.2367-1-guojinhui.liam@bytedance.com/
with more details.
Best Regards,
Jinhui
© 2016 - 2026 Red Hat, Inc.