From nobody Mon Sep 28 07:23:11 2026 Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) (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 72E373B1031 for ; Tue, 25 Aug 2026 06:04:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787637842; cv=none; b=MBVMyIU8cfwv0LVb2SOWTgBeV5oqA0XBiB0ldBPlfCK7TXj9zKF0XIm7mobVARXn1MEVdnQO2fhBMXeN2YajUHE2xONdphhraKeR98b2Ekicaokio0u0ZvchIhdjnkvLWjTYn42Im0ky2qwUvmSBxFTXpYS031GRgOTWrjK8vN4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787637842; c=relaxed/simple; bh=qZd7FKre5dmrKvcADqZAyXBMS/3CytHy0dsIUnnFeGU=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=Vv/yvZTDyPIFsD6P6oITeEoJhAsgZS53Mz7994n1jDkHNSSj4HKHSUxiPHPjYFwMT+hwckeuXnaE2viVPOZbL9XJbCmFiDWXYTMp8IBpEQ9E6Mc2XIyp5A6uvFvxbpbpkNOOfo6Rt6+V6MctUAFuybXvzoD4PuAGUVg3ndY0PUk= 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=tHMD+w+Y; arc=none smtp.client-ip=209.85.216.46 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="tHMD+w+Y" Received: by mail-pj1-f46.google.com with SMTP id 98e67ed59e1d1-381c51fde6bso5481889a91.2 for ; Mon, 24 Aug 2026 23:04:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787637841; x=1788242641; 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=WQdyTi/FS8Kj61goZufr0DmEJyM53G/+OIGRH28vBGc=; b=tHMD+w+Y8z1r2dj3iE8KMoJiBBudoBvO0Pt10rit+8UUqeZOF1RJciANIQ7i8pdyBv 2WiOXRDBJijWMs7/po2LbAK0+hsVX41sNQW32yqeO27KEo+v9XYzwcIRx+PHvtEiqwj2 80/rHM2chcBGxYNd9KJvgO4up7lV4kTW9qujHKxsOgAlY6bn6g72GuXqYpQ1xSvCoFiC qYuYW11BhhhOj+kWHvq7EIzwAqbh6Yftv6o3tEP9Zl5djFQvY+bPm1Ml/hh1S0MnjLx2 QHmURpc+65GhSIElCVeI8AltA0b2QdHbgewR8R+Qn+RyRExC6RWzYcmPvIm1Ql5Zu4fZ DEug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787637841; x=1788242641; 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=WQdyTi/FS8Kj61goZufr0DmEJyM53G/+OIGRH28vBGc=; b=Ac5cQjN3e7/Mpl6dbpqINGBgmFrDtP0FEnhGNkT7kRyQ8KdK3cRWlOb0AISk/V7JrL bKrutK84YN20aKNRoQnic14LxuCPb7ebirucX76g52QmLVAImq6+gFcFILz2XUebAbMe uKo7Zv1XT77EhVEzvXo4c1JhlNDPm3zqDsczpgIGCSP1XygxPNOd1OMOcFHwTkXqfAp2 pEy48mdin65Zvonf/t+jKxttEtYgxoBRGvvWE9o/BSHP3L8psFPd2b3sIvJXcylU6c7n 7qEpFwSwgjQyc7anB+SrRGyvgHUr9dxMn837IpZ9raE1XauxYPPHt7BCWLwHGYycg1To I6Pw== X-Forwarded-Encrypted: i=1; AHgh+RpdR8rzsysCUb3i9Q8xyoLT20JTD9HG9IYxaMVe0AvCQ/a81O5y0edkpSTuHVUv3JR29LbKqOXzqnCOTR0=@vger.kernel.org X-Gm-Message-State: AFuF++nvKOc8bj7BglgPY+p2XZyVZg68BaLn7wOQa89bKnUGKoDkmpk/ ld8IdwzWFa6FjaaJ2FVbR6MZkptQBsk75W8J5hwgIRJrxcV8jiVuVD6V X-Gm-Gg: AR+sD13Km4tF+XDt2yAyo3Sf4zGLMeDLqiUUtnMjd0wIgfBf5ly6sbx3j8X4mCETRgU 35HJPtmWSt3zuvUKVroye8E62NAx8vexzAY934/0erFNrgTn4M/JR+VCUZc8tTVFliGAMNdwbsE lf6dc6CWwopipr5Io8MWgF0jNGUtrYTFCbPx9qiaYBUbdywwLSllrnZKXRD+oia9TzCKFHz0MUc svGBPcBRW7WW/5C87fVP4XqL3IQUdboqNqomhZOmNxD9EdNQdNDbRKkSSflYyY6ByImqlSiJVRG Zxw0VVfJPrup8nC0Qc9ng92c0xfo6o4TQzB9+LhvTBtdMHMN8xsNrOY/02M73UWNLIy3PcTY6wy VzoDIRGmKXjRSZkfxcGbSUufXav0nrb0lmojeDPN164LzwJYk4NNvzY7JvJt5dLbuDaq4x4EZB5 8+Hxo4/zBRLYSgo8qVRyVS+W+18M8k0z0+xU0OAsnV2sj5eDh2K9ITjYtmEITkWa+QMwTID6ova /hb6WJj+MTYbrqg8VFl8C5pMQn9vLN1Lozat1vMBFGTkWWMjuI5 X-Received: by 2002:a17:90b:1d50:b0:38f:dec8:f7e9 with SMTP id 98e67ed59e1d1-395df29b3c5mr49167378a91.12.1787637840732; Mon, 24 Aug 2026 23:04:00 -0700 (PDT) Received: from hanzj-mi.. (ec2-99-79-140-187.ca-central-1.compute.amazonaws.com. [99.79.140.187]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39645b82847sm2536296a91.11.2026.08.24.23.03.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 23:04:00 -0700 (PDT) From: Zhijian Han To: Richard Zhu , Lucas Stach , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Manivannan Sadhasivam , Bjorn Helgaas , Frank Li , Sascha Hauer Cc: Rob Herring , Pengutronix Kernel Team , Fabio Estevam , linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, linux-kernel@vger.kernel.org, Zhijian Han , sashiko-bot@kernel.org Subject: [PATCH v2] PCI: imx6: fix endpoint init error handling Date: Tue, 25 Aug 2026 14:03:40 +0800 Message-ID: <20260825060340.3767635-1-hanzhijian1991@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" imx_add_pcie_ep() ignores the return value of imx_pcie_host_init(), so a failure to enable the clocks, regulators, or PHY during endpoint initialization goes unnoticed and the driver proceeds to initialize the endpoint against unpowered hardware. It also returns directly without releasing the host resources when dw_pcie_ep_init() or dw_pcie_ep_init_registers() fails, leaking the clocks, regulators, and PHY that imx_pcie_host_init() acquired. Check the return value of imx_pcie_host_init() and register imx_pcie_host_exit() with devm_add_action_or_reset() so the host resources are released through the devres framework, which unregisters the EPC device before powering the hardware off. This mirrors the root port path, where dw_pcie_host_init() releases these resources through the same framework. Reported-by: sashiko-bot@kernel.org Link: https://lore.kernel.org/all/20260824152857.DB9771F00A3D@smtp.kernel.o= rg/ Signed-off-by: Zhijian Han Reviewed-by: Frank Li --- v2: - Use devm_add_action_or_reset() for imx_pcie_host_exit() instead of calling it directly on the error paths, so the EPC device is unregistered before the hardware is powered off drivers/pci/controller/dwc/pci-imx6.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller= /dwc/pci-imx6.c index 39790e66b..f0fb4e1b0 100644 --- a/drivers/pci/controller/dwc/pci-imx6.c +++ b/drivers/pci/controller/dwc/pci-imx6.c @@ -1488,6 +1488,11 @@ static void imx_pcie_host_exit(struct dw_pcie_rp *pp) regulator_disable(imx_pcie->vpcie); } =20 +static void imx_pcie_host_exit_action(void *data) +{ + imx_pcie_host_exit(data); +} + static void imx_pcie_host_post_init(struct dw_pcie_rp *pp) { struct dw_pcie *pci =3D to_dw_pcie_from_pp(pp); @@ -1634,7 +1639,20 @@ static int imx_add_pcie_ep(struct imx_pcie *imx_pcie, struct dw_pcie_rp *pp =3D &pci->pp; struct device *dev =3D pci->dev; =20 - imx_pcie_host_init(pp); + ret =3D imx_pcie_host_init(pp); + if (ret) + return ret; + + /* + * Tear the host resources down via a devm action so that, on probe + * failure, the EPC device created by dw_pcie_ep_init() is + * unregistered (also via devres) before the clocks, regulators and + * PHY are switched off. + */ + ret =3D devm_add_action_or_reset(dev, imx_pcie_host_exit_action, pp); + if (ret) + return ret; + ep =3D &pci->ep; ep->ops =3D &pcie_ep_ops; =20 --=20 2.43.0