[lvc-project] [PATCH net v3 2/3] net: fealnx: disable the PCI device on remove and probe failure
Loktionov, Aleksandr
aleksandr.loktionov at intel.com
Wed Oct 21 13:41:55 MSK 2026
> -----Original Message-----
> From: Жамбакиев Радий Рикардинович <r.zhambakiev at prosoftsystems.ru>
> Sent: Monday, October 19, 2026 3:43 PM
> To: Andrew Lunn <andrew+netdev at lunn.ch>
> Cc: Жамбакиев Радий Рикардинович <r.zhambakiev at prosoftsystems.ru>; David
> S. Miller <davem at davemloft.net>; Eric Dumazet <edumazet at google.com>;
> Jakub Kicinski <kuba at kernel.org>; Paolo Abeni <pabeni at redhat.com>;
> Michael Grzeschik <mgr at kernel.org>; Jijie Shao <shaojijie at huawei.com>;
> Loktionov, Aleksandr <aleksandr.loktionov at intel.com>; Denis Benato
> <benato.denis96 at gmail.com>; Uwe Kleine-König (The Capable Hub)
> <u.kleine-koenig at baylibre.com>; netdev at vger.kernel.org; linux-
> kernel at vger.kernel.org; lvc-project at linuxtesting.org;
> stable at vger.kernel.org
> Subject: [PATCH net v3 2/3] net: fealnx: disable the PCI device on
> remove and probe failure
>
> From: Radiy Zhambakiev <r.zhambakiev at prosoftsystems.ru>
>
> pci_enable_device() is called in probe, but the device is never disabled
> on probe failure or remove. Device remains enabled and bus mastering
> stays active.
>
> Add pci_disable_device() to the probe error unwind and to
> fealnx_remove_one(), after all other resources have been released.
>
> Found by Linux Verification Center (linuxtesting.org)
>
> Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
> Cc: stable at vger.kernel.org
> Signed-off-by: Radiy Zhambakiev <r.zhambakiev at prosoftsystems.ru>
> ---
> drivers/net/ethernet/fealnx.c | 12 ++++++++----
> 1 file changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/net/ethernet/fealnx.c
> b/drivers/net/ethernet/fealnx.c index 68194c9ef332..b5e96c7037f3 100644
> --- a/drivers/net/ethernet/fealnx.c
> +++ b/drivers/net/ethernet/fealnx.c
> @@ -502,12 +502,13 @@ static int fealnx_init_one(struct pci_dev *pdev,
> if (len < MIN_REGION_SIZE) {
> dev_err(&pdev->dev,
> "region size %ld too small, aborting\n", len);
> - return -ENODEV;
> + err = -ENODEV;
> + goto err_out_disable;
> }
>
> - i = pci_request_regions(pdev, boardname);
> - if (i)
> - return i;
> + err = pci_request_regions(pdev, boardname);
> + if (err)
> + goto err_out_disable;
>
> irq = pdev->irq;
>
> @@ -671,6 +672,8 @@ static int fealnx_init_one(struct pci_dev *pdev,
> pci_iounmap(pdev, ioaddr);
> err_out_res:
> pci_release_regions(pdev);
> +err_out_disable:
> + pci_disable_device(pdev);
> return err;
> }
>
> @@ -690,6 +693,7 @@ static void fealnx_remove_one(struct pci_dev *pdev)
> pci_iounmap(pdev, np->mem);
> free_netdev(dev);
> pci_release_regions(pdev);
> + pci_disable_device(pdev);
> } else
> printk(KERN_ERR "fealnx: remove for unknown device\n"); }
> --
> 2.53.0
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov at intel.com>
More information about the lvc-project
mailing list