]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - 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
1 From 8038aad5e0fd636363cf3b015970cd85fa1475ef Mon Sep 17 00:00:00 2001
2 From: Sasha Levin <sashal@kernel.org>
3 Date: Mon, 4 Oct 2021 14:59:25 +0200
4 Subject: PCI: Drop pci_device_remove() test of pci_dev->driver
5 MIME-Version: 1.0
6 Content-Type: text/plain; charset=UTF-8
7 Content-Transfer-Encoding: 8bit
8
9 From: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
10
11 [ Upstream commit 097d9d414433315122f759ee6c2d8a7417a8ff0f ]
12
13 When the driver core calls pci_device_remove(), there is a driver bound
14 to the device, so pci_dev->driver is never NULL.
15
16 Remove the unnecessary test of pci_dev->driver.
17
18 Link: https://lore.kernel.org/r/20211004125935.2300113-2-u.kleine-koenig@pengutronix.de
19 Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
20 Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
21 Reviewed-by: Christoph Hellwig <hch@lst.de>
22 Stable-dep-of: 9d5286d4e7f6 ("PCI/PM: Drain runtime-idle callbacks before driver removal")
23 Signed-off-by: Sasha Levin <sashal@kernel.org>
24 ---
25 drivers/pci/pci-driver.c | 16 +++++++---------
26 1 file changed, 7 insertions(+), 9 deletions(-)
27
28 diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c
29 index 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 --
57 2.43.0
58