From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1860D50C2A4; Wed, 30 Sep 2026 17:14:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790788483; cv=none; b=OSDARuXK6JdXMRJWcKyunv5G4+dx5O79uu/yS+uB6X/TSZslj2zYxbzxx5X3Rah/+sKZ8SJezD3fFC280bymDV0wdPWlP2WLsS6Ve5XgmGxbgkLElxD3oj3DMLOM36yAqCdIuCfXizmH+CXEwSb+9egZDjljf1cAISOHzXcET3A= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790788483; c=relaxed/simple; bh=mJp8JjdhXnoTduR2ZW63hiWja+Iuigtau+3Rl/hBDI0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=RInhcpcOD6lR0cUI8SV41AVJKs72klmPPj4sA3lZq6cvcoqXYyB0H5k1nmoRml0jS4xiqOEKfvYwXGW5AyAWzfXbuC1qpELjTmkNAWEk0M32Zvcjf+t3rkTXYEIfiJLizuNV9Tp15vtfBvzfBwwWiJZF3zb5JrWb4hJs/aaOXUs= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=GGOPT+aV; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="GGOPT+aV" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1D3761F000FF; Wed, 30 Sep 2026 17:14:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=korg; t=1790788481; bh=/5yFCcjT3bUSk4t+VAP/cj9XsWkQkKzVqJJrTtc1uz0=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=GGOPT+aV1rLvtvOHRaB2IeTzfZ7ZljXmVUL1WuAHM/795Gsqg4I6B+gpr5ZYyox6u Wv/xGFBde8+sLVneJbBmjf6uLQdXvbObxor5KOWT3+HV1H0BGQUqBx4OSkhTaF26WC KQNLtSXa6fs+0CG9HVhAQRgrBWc4q44U8Z7JNvLE= From: Greg Kroah-Hartman To: stable@vger.kernel.org Cc: Greg Kroah-Hartman , patches@lists.linux.dev, Vega , Luxing Yin , Zihan Xi , Johannes Berg , Sasha Levin Subject: [PATCH 6.12 113/877] wifi: virt_wifi: dont transfer operstate before register Date: Wed, 30 Sep 2026 17:17:04 +0200 Message-ID: <20260930152417.175634301@linuxfoundation.org> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260930152414.738996857@linuxfoundation.org> References: <20260930152414.738996857@linuxfoundation.org> User-Agent: quilt/0.69 X-stable: review X-Patchwork-Hint: ignore Precedence: bulk X-Mailing-List: patches@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 6.12-stable review patch. If anyone has any objections, please let me know. ------------------ From: Zihan Xi [ Upstream commit e5c8d7acd31b27057ea42cd405d0b3ece097bc89 ] virt_wifi_newlink() calls netif_stacked_transfer_operstate() before register_netdevice(). If the lower device is dormant, that queues the new netdev on lweventlist while it is still uninitialized. If registration fails after that, for example because of an invalid name such as "bad/name", free_netdev() immediately frees the object. A later linkwatch_fire_event() then use-after-frees the list entry. Move the transfer to after netdev_upper_dev_link(), as macvlan and ipvlan already do. Fixes: c7cdba31ed8b ("mac80211-next: rtnetlink wifi simulation device") Reported-by: Vega Assisted-by: LLM Co-developed-by: Luxing Yin Signed-off-by: Luxing Yin Signed-off-by: Zihan Xi Link: https://patch.msgid.link/f5a832fb0ab228ce6e2b5a91fba4ca8b79198a2f.1788948455.git.zihanx@nebusec.ai Signed-off-by: Johannes Berg Signed-off-by: Sasha Levin --- drivers/net/wireless/virtual/virt_wifi.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/virtual/virt_wifi.c b/drivers/net/wireless/virtual/virt_wifi.c index 056d375e3f41f..4d36c15c1118e 100644 --- a/drivers/net/wireless/virtual/virt_wifi.c +++ b/drivers/net/wireless/virtual/virt_wifi.c @@ -554,7 +554,6 @@ static int virt_wifi_newlink(struct net *src_net, struct net_device *dev, } eth_hw_addr_inherit(dev, priv->lowerdev); - netif_stacked_transfer_operstate(priv->lowerdev, dev); dev->ieee80211_ptr = kzalloc(sizeof(*dev->ieee80211_ptr), GFP_KERNEL); @@ -580,6 +579,8 @@ static int virt_wifi_newlink(struct net *src_net, struct net_device *dev, goto unregister_netdev; } + netif_stacked_transfer_operstate(priv->lowerdev, dev); + dev->priv_destructor = virt_wifi_net_device_destructor; priv->being_deleted = false; priv->is_connected = false; -- 2.53.0