[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