From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pz2-f42.google.com (mail-pz2-f42.google.com [74.125.228.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2D0923C1991 for ; Mon, 21 Sep 2026 13:09:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.228.42 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789996184; cv=none; b=WIeoyKgphaMh4NaqiZx0MsVuneihhPXuNEnmLVmyThhbN5zmC9efsdXNaIcZe2CFRMr1yyTWRoSsfWbHbjoru/yib8xRhLJO9IM2kQG3mlLLDHJLV3RYHN7eMsgxEffP8VxPKh75dPDqhA6UTyGpY6s0BHMfW/TezeJs+78O4ss= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789996184; c=relaxed/simple; bh=eiuWmlpWIrVmvRukmtMzZVNhvzYKEvXfj3/9QCPxu5Y=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=OCRk4IWGSPR2WnbDQ/Ng4BxJFdsYAs1f2bZYyK/Dy7aNrKd9rsv+nqLw4GOBCp9abz1Jjs7y9sZZO9zlOyY8Ck5pa4oXaX3e40KMJk2DXhjnf80bySf3TsyLqetIDYqms1fjUCobqDw9oDBvuF3Xgncm7yNG2pW6/kQ/QKKlYxs= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=gbH46PJU; arc=none smtp.client-ip=74.125.228.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="gbH46PJU" Received: by mail-pz2-f42.google.com with SMTP id 41be03b00d2f7-cc1ceb47d55so533663a12.1 for ; Mon, 21 Sep 2026 06:09:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789996182; x=1790600982; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=snQf0hJkQsH7Jj4aS5id74hgw0NIowrU4G8FGq6/9fI=; b=gbH46PJURVM7ZTREuV2r1oNue8DRiPFq/kT5g7aJL3XK4lYzByd8eOkTSgiiB7jnpj yQDsXEZXreurjXy/ZoNr1+ONL802AjHj7Gy5kEiP1t8/hJAnRp63CCQWzhaGFo5L6sv8 CTEzWr1vfh9Dx/HSYjTHUhHbIz6gXR3CB2eaPug6/0RyHeXHCvVNby/EouSqxEpocaUd dYmz5PBMW9SooxNapP4pl7MriU+wEGI49pN/wxKRVNVBBzq5pLs9SggDkDplycfIrC27 F63d7oFB61q0NFezBPL0d3YYRcNdC6TLu0wIVcQ5+AUbTzUJu56hMrMNPZJ1A7bNs8rj icHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789996182; x=1790600982; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=snQf0hJkQsH7Jj4aS5id74hgw0NIowrU4G8FGq6/9fI=; b=ddFRwbpeBdD+yb9B7GmcBXK0o3njIWocOGd1jPEkasgeA5bz400EUpqn8EwC0mZbQx uujuxOWxIP1PXG/7qbtoSTbMJokzMSnV2ca3sbb4FksuKJVPdznaMnZPJm+SMI71rytl 5WhGvxiEAR0xzFOpuTdfM10N+QTmFHuAsf0UlIZrXPUBco10xFAyQtL3JSSrfNVDuYn4 CwuIsK/k/gYqfWHLjPlbBEqRzJaL4zbaZtLphKyEJTMHOBCiHIbXvBjoK/0sJQ4hogud VWtut4gwROy1cvnoVm5wrdGLaQIgpjQ/TGuKdi705scdr5fpVUxChqLQBz5hqrKzM4t6 ltbg== X-Forwarded-Encrypted: i=1; AKwUvBxNn94CT47bijGQl+w/eBQo2+RaTVds2GlXbzpTnFOexWWFavnucwQP3J+jSr9983sKZjScHao=@vger.kernel.org X-Gm-Message-State: AFuF++m93uyEYLYyfdCEm70jJe2w9td8ytXV3Vv+GnNspaN+xaHNA3bW 6D1I7A/azYdFjKM5Zd7hPA3HtcHzEPAwfG7dzEKT6dk9O/QyFJxKP8Q9 X-Gm-Gg: AYBFou3FSBiSC7KSEfUxBM97VoHP/dW/SD0DVj9zDuyeUcBe00TaTqEp10hrMbreS46 HjlN9UTWd0B2PkXppS2+COGyOQC5fIPIIKIeHfQwZnshZ1eR9UkEWlOGE9HtTaWe4BdUfYyyPMH WWvsm6/TegrU27Qn3rxm5I2SBdiqJt08wq2OKI50Sn5ri6rrmx8PwzLipVSowj4Tala7bxIozco gX4zJFSKsAi2SxSrN1d5ZpHtHZISWCqQv0hivXw+WeVtR3jNdjYbsHre0UraHR0F+3TzvwKsO2h dxj6emUp/uwFkhpFLSfjH2bN9UAX42D4OOlL3KocazNDHIoiSgmWeR2eGmd5U77ubWRO7HXr6mQ VyezezteCv5I+5yetFUYy0ReYETLW86jtkfF6UcROIR3tiaun3VjTiOHlVr31YKAZ4n3sLgL3kz aNhI6lzkEn5AQRJ2pGt6aImjaErVg5SPCu2xdJBLJ4n6MSAuKLGcVefA== X-Received: by 2002:a17:90b:2890:b0:39e:3dad:684f with SMTP id 98e67ed59e1d1-39e5546c89dmr10847172a91.4.1789996182395; Mon, 21 Sep 2026 06:09:42 -0700 (PDT) Received: from lgs.. ([2001:250:5800:1002::de93]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a023e44854sm5275079a91.4.2026.09.21.06.09.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Sep 2026 06:09:41 -0700 (PDT) From: Guangshuo Li To: Justin Chen , Florian Fainelli , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , bcm-kernel-feedback-list@broadcom.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Guangshuo Li , stable@vger.kernel.org Subject: [PATCH] net: bcmasp: fix MDIO child device leaks Date: Mon, 21 Sep 2026 21:09:29 +0800 Message-ID: <20260921130929.403129-1-lgs201920130244@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit bcmasp_probe() populates MDIO child platform devices using of_platform_populate(). If initialization later fails, the probe error paths clean up interfaces and clock state without depopulating those child devices. The normal remove path has the same issue and leaves the populated MDIO devices registered after the ASP driver is unbound. Add a separate error path for failures that occur after the MDIO devices have been populated, and call of_platform_depopulate() there. Also depopulate the child devices during normal driver removal. The issue was identified by a static analysis tool I developed and confirmed by manual review. Fixes: 490cb412007d ("net: bcmasp: Add support for ASP2.0 Ethernet controller") Cc: stable@vger.kernel.org Signed-off-by: Guangshuo Li --- drivers/net/ethernet/broadcom/asp2/bcmasp.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/broadcom/asp2/bcmasp.c b/drivers/net/ethernet/broadcom/asp2/bcmasp.c index 972474893a6b..c4087408a822 100644 --- a/drivers/net/ethernet/broadcom/asp2/bcmasp.c +++ b/drivers/net/ethernet/broadcom/asp2/bcmasp.c @@ -1309,14 +1309,14 @@ static int bcmasp_probe(struct platform_device *pdev) sizeof(*priv->mda_filters), GFP_KERNEL); if (!priv->mda_filters) { ret = -ENOMEM; - goto err_clock_disable; + goto err_depopulate; } priv->net_filters = devm_kcalloc(dev, priv->num_net_filters, sizeof(*priv->net_filters), GFP_KERNEL); if (!priv->net_filters) { ret = -ENOMEM; - goto err_clock_disable; + goto err_depopulate; } bcmasp_core_init_filters(priv); @@ -1327,7 +1327,7 @@ static int bcmasp_probe(struct platform_device *pdev) if (!ports_node) { dev_warn(dev, "No ports found\n"); ret = -EINVAL; - goto err_clock_disable; + goto err_depopulate; } i = 0; @@ -1369,6 +1369,8 @@ static int bcmasp_probe(struct platform_device *pdev) err_cleanup: bcmasp_remove_intfs(priv); +err_depopulate: + of_platform_depopulate(dev); err_clock_disable: clk_disable_unprepare(priv->clk); @@ -1383,6 +1385,7 @@ static void bcmasp_remove(struct platform_device *pdev) return; bcmasp_remove_intfs(priv); + of_platform_depopulate(&pdev->dev); } static void bcmasp_shutdown(struct platform_device *pdev) -- 2.43.0