]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - queue-5.10/pci-drop-pci_device_remove-test-of-pci_dev-driver.patch
5.10-stable patches
[thirdparty/kernel/stable-queue.git] / queue-5.10 / pci-drop-pci_device_remove-test-of-pci_dev-driver.patch
CommitLineData
b7ca0ba0
SL
1From 8038aad5e0fd636363cf3b015970cd85fa1475ef Mon Sep 17 00:00:00 2001
2From: Sasha Levin <sashal@kernel.org>
3Date: Mon, 4 Oct 2021 14:59:25 +0200
4Subject: PCI: Drop pci_device_remove() test of pci_dev->driver
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9From: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
10
11[ Upstream commit 097d9d414433315122f759ee6c2d8a7417a8ff0f ]
12
13When the driver core calls pci_device_remove(), there is a driver bound
14to the device, so pci_dev->driver is never NULL.
15
16Remove the unnecessary test of pci_dev->driver.
17
18Link: https://lore.kernel.org/r/20211004125935.2300113-2-u.kleine-koenig@pengutronix.de
19Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
20Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
21Reviewed-by: Christoph Hellwig <hch@lst.de>
22Stable-dep-of: 9d5286d4e7f6 ("PCI/PM: Drain runtime-idle callbacks before driver removal")
23Signed-off-by: Sasha Levin <sashal@kernel.org>
24---
25 drivers/pci/pci-driver.c | 16 +++++++---------
26 1 file changed, 7 insertions(+), 9 deletions(-)
27
28diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c
29index c22cc20db1a74..dbfeb5c148755 100644
30--- a/drivers/pci/pci-driver.c
31+++ b/drivers/pci/pci-driver.c
32@@ -444,16 +444,14 @@ static int pci_device_remove(struct device *dev)
33 struct pci_dev *pci_dev = to_pci_dev(dev);
34 struct pci_driver *drv = pci_dev->driver;
35
36- if (drv) {
37- if (drv->remove) {
38- pm_runtime_get_sync(dev);
39- drv->remove(pci_dev);
40- pm_runtime_put_noidle(dev);
41- }
42- pcibios_free_irq(pci_dev);
43- pci_dev->driver = NULL;
44- pci_iov_remove(pci_dev);
45+ if (drv->remove) {
46+ pm_runtime_get_sync(dev);
47+ drv->remove(pci_dev);
48+ pm_runtime_put_noidle(dev);
49 }
50+ pcibios_free_irq(pci_dev);
51+ pci_dev->driver = NULL;
52+ pci_iov_remove(pci_dev);
53
54 /* Undo the runtime PM settings in local_pci_probe() */
55 pm_runtime_put_sync(dev);
56--
572.43.0
58