All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dust Li <dust.li@linux.alibaba.com>
To: stable@vger.kernel.org
Cc: Breno Leitao <leitao@debian.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Sasha Levin <sashal@kernel.org>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 6.6.y] net: free_netdev: exit earlier if dummy
Date: Tue, 10 Nov 2026 14:36:14 +0800	[thread overview]
Message-ID: <avK7XqLvdaeWlp8o@linux.alibaba.com> (raw)
In-Reply-To: <20261107161415.1917665-1-dust.li@linux.alibaba.com>

On 2026-11-08 00:14:15, Dust Li wrote:

Hi Greg, Sasha

Can you pick up this patch for 6.6 ?

This is a prerequisite that was missed when 6.6.y picked up the
dummy-net_device conversion of the mediatek driver.

6.6.158 took b209bd6d0bff ("net: mediatek: mtk_eth_sock: allocate dummy
net_device dynamically") as d5d57501f543, followed by 16f3a28cf5f8
(as 81e82340170ae) and "allocate dummy netdev sooner" (efc91ab1d97bd).

alloc_netdev_dummy() -> init_dummy_netdev_core() sets
dev->reg_state = NETREG_DUMMY, but 6.6.y free_netdev() only special
cases NETREG_UNREGISTERING and NETREG_UNINITIALIZED.  So every
free_netdev(eth->dummy_dev) -- mtk_remove() at
drivers/net/ethernet/mediatek/mtk_eth_soc.c and the probe error
path -- walks into

    BUG_ON(dev->reg_state != NETREG_UNREGISTERED);

Upstream f8d05679fb3f and b209bd6d0bff both landed in v6.10-rc1, so
mainline was never broken.

5.10.y / 5.15.y / 6.1.y - alloc_netdev_dummy() does not exist and no
                          driver creates a dynamically allocated
                          dummy net_device

So only 6.6.y need this.

Best regards,
Dust


>From: Breno Leitao <leitao@debian.org>
>
>For dummy devices, exit earlier at free_netdev() instead of executing
>the whole function. This is necessary, because dummy devices are
>special, and shouldn't have the second part of the function executed.
>
>Otherwise reg_state, which is NETREG_DUMMY, will be overwritten and
>there will be no way to identify that this is a dummy device. Also, this
>device do not need the final put_device(), since dummy devices are not
>registered (through register_netdevice()), where the device reference is
>increased (at netdev_register_kobject()/device_add()).
>
>Suggested-by: Jakub Kicinski <kuba@kernel.org>
>Signed-off-by: Breno Leitao <leitao@debian.org>
>Reviewed-by: Ido Schimmel <idosch@nvidia.com>
>Signed-off-by: David S. Miller <davem@davemloft.net>
>Signed-off-by: Dust Li <dust.li@linux.alibaba.com>
>---
> net/core/dev.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
>diff --git a/net/core/dev.c b/net/core/dev.c
>index f9436563a2e84..0d88d285c713f 100644
>--- a/net/core/dev.c
>+++ b/net/core/dev.c
>@@ -11093,7 +11093,8 @@ void free_netdev(struct net_device *dev)
> 	dev->xdp_bulkq = NULL;
> 
> 	/*  Compatibility with error handling in drivers */
>-	if (dev->reg_state == NETREG_UNINITIALIZED) {
>+	if (dev->reg_state == NETREG_UNINITIALIZED ||
>+	    dev->reg_state == NETREG_DUMMY) {
> 		netdev_freemem(dev);
> 		return;
> 	}
>-- 
>2.43.7

      reply	other threads:[~2026-11-10  6:36 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-07 16:14 [PATCH 6.6.y] net: free_netdev: exit earlier if dummy Dust Li
2026-11-10  6:36 ` Dust Li [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=avK7XqLvdaeWlp8o@linux.alibaba.com \
    --to=dust.li@linux.alibaba.com \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=kuba@kernel.org \
    --cc=leitao@debian.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=sashal@kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.