Re: [PATCH net] bnxt_en: bring back rtnl lock in bnxt_shutdown
From: Taehee Yoo
Date: Sat Mar 29 2025 - 06:25:44 EST
On Sat, Mar 29, 2025 at 2:42 AM Stanislav Fomichev <sdf@xxxxxxxxxxx> wrote:
>
Hi Stanislav,
Thanks a lot for this fix!
> Taehee reports missing rtnl from bnxt_shutdown path:
>
> inetdev_event (./include/linux/inetdevice.h:256 net/ipv4/devinet.c:1585)
> notifier_call_chain (kernel/notifier.c:85)
> __dev_close_many (net/core/dev.c:1732 (discriminator 3))
> kernel/locking/mutex.c:713 kernel/locking/mutex.c:732)
> dev_close_many (net/core/dev.c:1786)
> netif_close (./include/linux/list.h:124 ./include/linux/list.h:215
> bnxt_shutdown (drivers/net/ethernet/broadcom/bnxt/bnxt.c:16707) bnxt_en
> pci_device_shutdown (drivers/pci/pci-driver.c:511)
> device_shutdown (drivers/base/core.c:4820)
> kernel_restart (kernel/reboot.c:271 kernel/reboot.c:285)
>
> Bring back the rtnl lock.
Tested-by: Taehee Yoo <ap420073@xxxxxxxxx>
>
> Link: https://lore.kernel.org/netdev/CAMArcTV4P8PFsc6O2tSgzRno050DzafgqkLA2b7t=Fv_SY=brw@xxxxxxxxxxxxxx/
> Fixes: 004b5008016a ("eth: bnxt: remove most dependencies on RTNL")
> Reported-by: Taehee Yoo <ap420073@xxxxxxxxx>
> Signed-off-by: Stanislav Fomichev <sdf@xxxxxxxxxxx>
> ---
> drivers/net/ethernet/broadcom/bnxt/bnxt.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
> index 934ba9425857..1a70605fad38 100644
> --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
> +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
> @@ -16698,6 +16698,7 @@ static void bnxt_shutdown(struct pci_dev *pdev)
> if (!dev)
> return;
>
> + rtnl_lock();
> netdev_lock(dev);
> bp = netdev_priv(dev);
> if (!bp)
> @@ -16717,6 +16718,7 @@ static void bnxt_shutdown(struct pci_dev *pdev)
>
> shutdown_exit:
> netdev_unlock(dev);
> + rtnl_unlock();
> }
>
> #ifdef CONFIG_PM_SLEEP
> --
> 2.48.1
>