From nobody Wed Apr 8 02:55:24 2026 Received: from sender4-pp-o94.zoho.com (sender4-pp-o94.zoho.com [136.143.188.94]) (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 C57F63BBA10; Tue, 10 Mar 2026 15:59:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.94 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773158348; cv=pass; b=NPmBbwdpgUDCqspXRFhBZZMeu+muGrbOYHiXEIAQPgNO+0v2d2HvJPIvUH8NLLLzsO034eEMzyKuMV3IDt3NH/A7dUr/cKlom384iE287Rhqcf6xc7LK49vNxw3SDg2CdxMcwzk3rqAMw5gYE4AsNtCzJEGhGSmftQPPEkfZVLM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773158348; c=relaxed/simple; bh=9cegwMqhBb1M2HDTgiRRFQZe1yhObxc9jZx5iEJ87RM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mCBtMkErRXQbFS1tBgfLVlddW7ALiVjlEV6LsXnIDGKzyCKRAq+wCv76oLIFDgLPTVkc7/pn/eJdWyr/JwsM7c3bzcv1n6Yn805hW6ZREMdX18vVzCpwHXaXKY0QvDokZIVPHHVF/BculZiw+GcsV1rfxV4y0GXHs6M/Qi4KBI4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com; spf=pass smtp.mailfrom=zohomail.com; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@zohomail.com header.b=Ww7fTGWZ; arc=pass smtp.client-ip=136.143.188.94 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=zohomail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@zohomail.com header.b="Ww7fTGWZ" ARC-Seal: i=1; a=rsa-sha256; t=1773158307; cv=none; d=zohomail.com; s=zohoarc; b=e0MLjwRJa6af31IKkqM1ahJeO3ijttll/ELcTUFL6YjcadB141rOu7kSom9x3EwOJTNXTFWk7RtC2lAFbRco3xy3GlLQPRMMGTjcrfp0wZpoHb84D5upGJG1dp3ZF6UvRYvFqCgVBLgH+lbQ0Ugaigf/cVv0wRyrVqumYkLNKOg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773158307; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=v+Sp5eB4jHn/sA0kH/pywsovtoZ/8KBPXVDiCouPg1s=; b=LA7vfqtzJ/aRN3ZOZVERtiU2PKcblOFwdMB/grY7TTwB+gyCT2VM6HcE3/PazYkeFEocCJCh5L5LeIjjmj5FD9D76rotIG3/WCTuTUok/YoQjdFJsRLIdjM3f7pm3n1xTVQTpY0MvYd8QRZVuHOS/k0eBKtJtVcEQqGQF/LdqCg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=zohomail.com; spf=pass smtp.mailfrom=ming.li@zohomail.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1773158307; s=zm2022; d=zohomail.com; i=ming.li@zohomail.com; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Feedback-ID:Reply-To; bh=v+Sp5eB4jHn/sA0kH/pywsovtoZ/8KBPXVDiCouPg1s=; b=Ww7fTGWZDToAGaUNRAbUGO/CWVVGAWx8JcS9a6HIBNGzSsTwmK9B5yGMKHUh0IwJ ed+tGXf/1CXUpRzJhc8BxXh+peyKzjdyuj9ARlB2qnCD6+XzpingZS+dP0MCBxwvCJS 31uxcGENCD44vUSDz11FEUlUCUewfochnTWEfyUE= Received: by mx.zohomail.com with SMTPS id 1773158305583401.95210919423346; Tue, 10 Mar 2026 08:58:25 -0700 (PDT) From: Li Ming Date: Tue, 10 Mar 2026 23:57:53 +0800 Subject: [PATCH 1/7] driver core: Add conditional guard support for device_lock() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260310-fix_access_endpoint_without_drv_check-v1-1-94fe919a0b87@zohomail.com> References: <20260310-fix_access_endpoint_without_drv_check-v1-0-94fe919a0b87@zohomail.com> In-Reply-To: <20260310-fix_access_endpoint_without_drv_check-v1-0-94fe919a0b87@zohomail.com> To: Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Davidlohr Bueso , Jonathan Cameron , Dave Jiang , Alison Schofield , Vishal Verma , Ira Weiny , Dan Williams , Bjorn Helgaas , Ben Cheatham Cc: driver-core@lists.linux.dev, linux-kernel@vger.kernel.org, linux-cxl@vger.kernel.org, Jonathan Cameron , Li Ming X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1773158297; l=769; i=ming.li@zohomail.com; s=20260210; h=from:subject:message-id; bh=9cegwMqhBb1M2HDTgiRRFQZe1yhObxc9jZx5iEJ87RM=; b=ehBbYLnANmALJM/xQZFVS97B7jdRua4Bbqk3ycAUeM++PZTiJ8P3T3Xb+/m0BOj9uRKFbG866 WhVU8eAISMHCx1EphgQzGJpkdCipb8z1ywjFh5da7EzDK+ziCNyV+Ya X-Developer-Key: i=ming.li@zohomail.com; a=ed25519; pk=JfhrdHjyYJMXt47Hy8d/fsqZuhGPD4Z3whV5lTfVvhE= Feedback-ID: rr0801122820a7170f3668632f2b094ead000053fb67fb145308710d3c84d7fd1dd6947224fdec47f60d19322b:zu08011227a6b6c6100c7aab107d4df107000092b27248d0c875ff9de6ab81fd4b25d251a64f261d430cf621:rf0801122d87d7d0d1a0dad495f20554cf000071052af948841edd458347db9b9ff1eadc414905b58ab7c305668c8253b510:ZohoMail X-ZohoMailClient: External Introduce conditional guard version of device_lock() for scenarios that require conditional device lock holding. Suggested-by: Dan Williams Signed-off-by: Li Ming Acked-by: Greg Kroah-Hartman Reviewed-by: Dan Williams --- include/linux/device.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/linux/device.h b/include/linux/device.h index 0be95294b6e6..4fafee80524b 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -911,6 +911,7 @@ static inline void device_unlock(struct device *dev) } =20 DEFINE_GUARD(device, struct device *, device_lock(_T), device_unlock(_T)) +DEFINE_GUARD_COND(device, _intr, device_lock_interruptible(_T), _RET =3D= =3D 0) =20 static inline void device_lock_assert(struct device *dev) { --=20 2.43.0 From nobody Wed Apr 8 02:55:24 2026 Received: from sender4-pp-o94.zoho.com (sender4-pp-o94.zoho.com [136.143.188.94]) (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 1CE2E327BFA; Tue, 10 Mar 2026 15:59:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.94 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773158369; cv=pass; b=Zlxkp6ehbEpXE19Ejhhm6C4Pf1a+ZU3wm3IbUvMdR7EQ7nujCu4tJD3Go+y01uE2naU1vIoFnqX0OAwYYVZfsAO9bevEKhOWuxT4mLKDBJhlG4yUN6kDosU6a5XOgHKPaQT/u4Qeq1+LllhwJLaNmARinl1hN4SFaAt8N45yTQk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773158369; c=relaxed/simple; bh=rU6WDhcN7WJon276w2eU/IaTYHGcXdC05P+xbVtAC/c=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=u5Odwj7OUlIXlbqRbz+pgUhJBum3Cq3HQbcTRxyOnSi79sy00BLazIRHYd1EPMg0nOj2eoYwRYxfafHbZaz58FJ0222vquMbVurbtm4XFXUTG2x2Yd+kSxR1nS5FW8RihsbMDFPjSYQuJSUwLcBd+O/81PB+UCTHP7mmxFbu/ZY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com; spf=pass smtp.mailfrom=zohomail.com; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@zohomail.com header.b=L8QvEyT+; arc=pass smtp.client-ip=136.143.188.94 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=zohomail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@zohomail.com header.b="L8QvEyT+" ARC-Seal: i=1; a=rsa-sha256; t=1773158311; cv=none; d=zohomail.com; s=zohoarc; b=YOmG3ytd+ZpwArJnoDFZhWt9MC+uzxjrYBKRMM3LruKV7vaR1tL/58rCqWu/VZU2HHa1Y7XguJ4CmIDpoYg4fc+izXjIMDFSD04Q8o6bJt8Vqrytw0HYqQ6vNzku4QZ/TSqyAQ7T9HQjhsBzhQjCinl4fE1nJWYDqzZWndt5+XE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773158311; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=h0gOEyLsKUXgoqobM1nzCwbTc9H0I1PIC4gr+hBO1Ns=; b=GCKOmFRoIZBv8bze+Vlg6+bc6iIaUxxJ0LdvQPu4xM2WIDuVoDThSRyRj6E14BuxnK0MqOgyuVXDWAgWONJPdw7iUqcs4D0oJD0zjAfRLU5sfpXcHG9k0EPRdXszkFMtFtUw5evHVKwnDCA6A5/TYCxGHisUj5dV8CR9NHciChg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=zohomail.com; spf=pass smtp.mailfrom=ming.li@zohomail.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1773158311; s=zm2022; d=zohomail.com; i=ming.li@zohomail.com; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Feedback-ID:Reply-To; bh=h0gOEyLsKUXgoqobM1nzCwbTc9H0I1PIC4gr+hBO1Ns=; b=L8QvEyT+IPi8UJoLGuk+N3QoVLq/kGIH1gPsL3wREKj8LlNr7TDL+qSa7iQdTFwN oS7cg7GZTtGXi4RkAFNt07l23vUEO+GMFpdGeC9R6ZjYzt1PxvhV5GVIxlGH2dVUFWi SE541wyL7wfOnzp17sc/lL9uHQoztrMZ6ytjEZYY= Received: by mx.zohomail.com with SMTPS id 1773158309175978.1934732389334; Tue, 10 Mar 2026 08:58:29 -0700 (PDT) From: Li Ming Date: Tue, 10 Mar 2026 23:57:54 +0800 Subject: [PATCH 2/7] cxl/memdev: Hold memdev lock during memdev poison injection/clear Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260310-fix_access_endpoint_without_drv_check-v1-2-94fe919a0b87@zohomail.com> References: <20260310-fix_access_endpoint_without_drv_check-v1-0-94fe919a0b87@zohomail.com> In-Reply-To: <20260310-fix_access_endpoint_without_drv_check-v1-0-94fe919a0b87@zohomail.com> To: Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Davidlohr Bueso , Jonathan Cameron , Dave Jiang , Alison Schofield , Vishal Verma , Ira Weiny , Dan Williams , Bjorn Helgaas , Ben Cheatham Cc: driver-core@lists.linux.dev, linux-kernel@vger.kernel.org, linux-cxl@vger.kernel.org, Jonathan Cameron , Li Ming X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1773158297; l=2059; i=ming.li@zohomail.com; s=20260210; h=from:subject:message-id; bh=rU6WDhcN7WJon276w2eU/IaTYHGcXdC05P+xbVtAC/c=; b=a3RUt3LqR6xtRa6WtV2TMQkICKxM/DUgoYI5x8NdYQB7CilD/ERhHP2L5s4egdO6ixKCN5A57 qzF+RDaA/LqD4leCqOBLOhwKy2RePIA8VnpQ8we20myaooIBU7Cbun3 X-Developer-Key: i=ming.li@zohomail.com; a=ed25519; pk=JfhrdHjyYJMXt47Hy8d/fsqZuhGPD4Z3whV5lTfVvhE= Feedback-ID: rr08011228f64cba3fca3349f30d5932eb000088510a6aeaf537156245488e2f3b102973c055191187e5f69433:zu0801122702eabe4b031738113eb0a7d30000e1aef14c5a5b7960673073a2698b35ea3f4509d6fb00eab84c:rf0801122dfdd9d40775a504c1041ef9590000ccebbfc4141a2eb0eca0b8210e7cda4d616cf8254de697da5b03bbe13bc200:ZohoMail X-ZohoMailClient: External CXL memdev poison injection/clearing debugfs interfaces are visible before the CXL memdev endpoint initialization, If user accesses the interfaces before cxlmd->endpoint updated, it is possible to access an invalid endpoint in cxl_dpa_to_region(). Hold CXL memdev lock at the beginning of the interfaces, this blocks the interfaces until CXL memdev probing completed. The following patch will check the given endpoint validity in cxl_dpa_to_region(). Suggested-by: Dan Williams Signed-off-by: Li Ming Reviewed-by: Alison Schofield Reviewed-by: Dave Jiang --- drivers/cxl/core/memdev.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/cxl/core/memdev.c b/drivers/cxl/core/memdev.c index 273c22118d3d..8ebaf9e96035 100644 --- a/drivers/cxl/core/memdev.c +++ b/drivers/cxl/core/memdev.c @@ -295,6 +295,7 @@ int cxl_inject_poison_locked(struct cxl_memdev *cxlmd, = u64 dpa) if (!IS_ENABLED(CONFIG_DEBUG_FS)) return 0; =20 + device_lock_assert(&cxlmd->dev); lockdep_assert_held(&cxl_rwsem.dpa); lockdep_assert_held(&cxl_rwsem.region); =20 @@ -331,6 +332,10 @@ int cxl_inject_poison(struct cxl_memdev *cxlmd, u64 dp= a) { int rc; =20 + ACQUIRE(device_intr, devlock)(&cxlmd->dev); + if ((rc =3D ACQUIRE_ERR(device_intr, &devlock))) + return rc; + ACQUIRE(rwsem_read_intr, region_rwsem)(&cxl_rwsem.region); if ((rc =3D ACQUIRE_ERR(rwsem_read_intr, ®ion_rwsem))) return rc; @@ -355,6 +360,7 @@ int cxl_clear_poison_locked(struct cxl_memdev *cxlmd, u= 64 dpa) if (!IS_ENABLED(CONFIG_DEBUG_FS)) return 0; =20 + device_lock_assert(&cxlmd->dev); lockdep_assert_held(&cxl_rwsem.dpa); lockdep_assert_held(&cxl_rwsem.region); =20 @@ -400,6 +406,10 @@ int cxl_clear_poison(struct cxl_memdev *cxlmd, u64 dpa) { int rc; =20 + ACQUIRE(device_intr, devlock)(&cxlmd->dev); + if ((rc =3D ACQUIRE_ERR(device_intr, &devlock))) + return rc; + ACQUIRE(rwsem_read_intr, region_rwsem)(&cxl_rwsem.region); if ((rc =3D ACQUIRE_ERR(rwsem_read_intr, ®ion_rwsem))) return rc; --=20 2.43.0 From nobody Wed Apr 8 02:55:24 2026 Received: from sender4-pp-o94.zoho.com (sender4-pp-o94.zoho.com [136.143.188.94]) (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 CC9A92D8DDD; Tue, 10 Mar 2026 15:59:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.94 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773158390; cv=pass; b=Nm36H6OfsX9mbCc1u80qXj9OtwkVWU3F4ETg8KRtYkEeRUvKXmTX6x4xcRONLo+e8OjnkAz46jxQ7oO6HNz0vBtuiH1WGDb+5FxkCagQqWyFROuhiqAua8jgQrdFf6PN9xRa6OxTC9pN36ryEjm/wI+G7ZKimpYaWHPdG4k3cMI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773158390; c=relaxed/simple; bh=7uXjgUS17rN8Ll/gnRcu85M6/i9qBoCICZaBKbWjeJ4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ieHl+clBZN9w7nW9Ks6z718Djpjbf0vrQMQx0rQOuNn5tTbZcbcoyIU4FapS6r7FiYUYAgGy8BcUVmm5XizbeAEYVpC+H8iAYyuqQcSMZhAveXUgalhyhzogeNkGJbDshcEtBwosnrE8oJ780sO8B1dsfwn6EPLsZPMN05q9tWg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com; spf=pass smtp.mailfrom=zohomail.com; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@zohomail.com header.b=QneG5rvr; arc=pass smtp.client-ip=136.143.188.94 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=zohomail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@zohomail.com header.b="QneG5rvr" ARC-Seal: i=1; a=rsa-sha256; t=1773158315; cv=none; d=zohomail.com; s=zohoarc; b=KHaFQKHXj3QeFgzhm5w0ysBLkqCSAuBPLVwDcpee734vpylG8DZ/bGa4iPkFQYueypsGOMZaRmpuaEo/iFjVf3Y7AZipbk+8yubXqzppmvCwuLP4UAYYnLaKoWZSXQO9dYM1ixADdfet9xK3rIFdqisDbAQGNlQV2zInTvU93ZY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773158315; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=+RPEIbMEe8q6eYLYeU4hi/v6ximwu60dK8z8ozgBoqA=; b=C69X0h6I6nH4kSkSyl5FXirA6En7neM5cd1fq4G7Xl3xo6fTV7rbIrhdZ55afkHrYCsospV593py3MM/6Qn0kLbtk2W7tBrVr18ZZdxqYwwxSxhKdYTfZdEg5TCtsDHz5VpyslWQDPbgfwKwjljf1ICSYmFwAPo+j5++a4zFwsQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=zohomail.com; spf=pass smtp.mailfrom=ming.li@zohomail.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1773158315; s=zm2022; d=zohomail.com; i=ming.li@zohomail.com; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Feedback-ID:Reply-To; bh=+RPEIbMEe8q6eYLYeU4hi/v6ximwu60dK8z8ozgBoqA=; b=QneG5rvrvaeYUXaEVhzv2SPU6DPtCfCftvAday96MTMx8tX+BCfBhDAV0G3DQ2mB 5yftQuLPnYkTMvfj/eXfS+auV8gFIzP7iwhvkLNm9mio8xEdP4o4g6rMX+eyAJSKCmi x1IEES2myKwjYR+rEPLN0QNU3pqp7a2l0cnfuAkk= Received: by mx.zohomail.com with SMTPS id 177315831278026.18028059296273; Tue, 10 Mar 2026 08:58:32 -0700 (PDT) From: Li Ming Date: Tue, 10 Mar 2026 23:57:55 +0800 Subject: [PATCH 3/7] cxl/region: Hold memdev lock during region poison injection/clear Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260310-fix_access_endpoint_without_drv_check-v1-3-94fe919a0b87@zohomail.com> References: <20260310-fix_access_endpoint_without_drv_check-v1-0-94fe919a0b87@zohomail.com> In-Reply-To: <20260310-fix_access_endpoint_without_drv_check-v1-0-94fe919a0b87@zohomail.com> To: Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Davidlohr Bueso , Jonathan Cameron , Dave Jiang , Alison Schofield , Vishal Verma , Ira Weiny , Dan Williams , Bjorn Helgaas , Ben Cheatham Cc: driver-core@lists.linux.dev, linux-kernel@vger.kernel.org, linux-cxl@vger.kernel.org, Jonathan Cameron , Li Ming X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1773158297; l=5515; i=ming.li@zohomail.com; s=20260210; h=from:subject:message-id; bh=7uXjgUS17rN8Ll/gnRcu85M6/i9qBoCICZaBKbWjeJ4=; b=xFC3LCto5UbkXryqeZTlYX8CaT7FkR9iqQv8qgAxGBLtL992Bo3Hlgu4sKh7KhTGqa4hMdKO1 Mkd7C+G32xBA3cIGv47ksO0s+GwbLY4NYpbiF5MN2RwCW4oJbttJ5JP X-Developer-Key: i=ming.li@zohomail.com; a=ed25519; pk=JfhrdHjyYJMXt47Hy8d/fsqZuhGPD4Z3whV5lTfVvhE= Feedback-ID: rr08011228cb73c16a3c571c9f26fcee140000409ad2aa4cf679071ad0393842c5e9db4f0624cd9315fcd58035:zu08011227beb5cb94cb9e0a7fb0d728d20000ddb8908f84b6e05a681563cd6af3fa6a51f5b5146db2e8a2da:rf0801122df722e868c718e3f2a9f790e3000013f66bbdc2c1918c15ef9a335a7d2e111dca2a554d6489fbe3f8db10ba8332:ZohoMail X-ZohoMailClient: External cxl_dpa_to_region() will require callers holding the given CXL memdev lock for endpoint validity checking in the following patch. To prepare it, region poison injection/clearing debugfs interfaces need to ensure the correct CXL memdev lock is held at the beginning. To keep lock sequence(cxlmd.dev -> cxl_rwsem.region -> cxl_rwsem.dpa) for avoiding deadlock. the interfaces have to find out the correct CXL memdev at first, holding lock in the sequence then checking if the DPA data has been changed before holding locks. Suggested-by: Dan Williams Signed-off-by: Li Ming --- drivers/cxl/core/region.c | 101 +++++++++++++++++++++++++++++++++++-------= ---- 1 file changed, 77 insertions(+), 24 deletions(-) diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c index 42874948b589..806512dfab07 100644 --- a/drivers/cxl/core/region.c +++ b/drivers/cxl/core/region.c @@ -4074,12 +4074,60 @@ static int validate_region_offset(struct cxl_region= *cxlr, u64 offset) return 0; } =20 +static int cxl_region_poison_lookup_locked(struct cxl_region *cxlr, u64 of= fset, + struct dpa_result *res) +{ + int rc; + + *res =3D (struct dpa_result){ .dpa =3D ULLONG_MAX, .cxlmd =3D NULL }; + + if (validate_region_offset(cxlr, offset)) + return -EINVAL; + + offset -=3D cxlr->params.cache_size; + rc =3D region_offset_to_dpa_result(cxlr, offset, res); + if (rc || !res->cxlmd || res->dpa =3D=3D ULLONG_MAX) { + dev_dbg(&cxlr->dev, + "Failed to resolve DPA for region offset %#llx rc %d\n", + offset, rc); + + return rc ? rc : -EINVAL; + } + + return 0; +} + +static int cxl_region_poison_lookup(struct cxl_region *cxlr, u64 offset, + struct dpa_result *res) +{ + int rc; + + ACQUIRE(rwsem_read_intr, region_rwsem)(&cxl_rwsem.region); + if ((rc =3D ACQUIRE_ERR(rwsem_read_intr, ®ion_rwsem))) + return rc; + + ACQUIRE(rwsem_read_intr, dpa_rwsem)(&cxl_rwsem.dpa); + if ((rc =3D ACQUIRE_ERR(rwsem_read_intr, &dpa_rwsem))) + return rc; + + return cxl_region_poison_lookup_locked(cxlr, offset, res); +} + static int cxl_region_debugfs_poison_inject(void *data, u64 offset) { - struct dpa_result result =3D { .dpa =3D ULLONG_MAX, .cxlmd =3D NULL }; struct cxl_region *cxlr =3D data; + struct dpa_result res1, res2; int rc; =20 + /* To retrieve the correct memdev */ + rc =3D cxl_region_poison_lookup(cxlr, offset, &res1); + if (rc) + return rc; + + ACQUIRE(device_intr, devlock)(&res1.cxlmd->dev); + if ((rc =3D ACQUIRE_ERR(device_intr, &devlock))) + return rc; + ACQUIRE(rwsem_read_intr, region_rwsem)(&cxl_rwsem.region); if ((rc =3D ACQUIRE_ERR(rwsem_read_intr, ®ion_rwsem))) return rc; @@ -4088,20 +4136,18 @@ static int cxl_region_debugfs_poison_inject(void *d= ata, u64 offset) if ((rc =3D ACQUIRE_ERR(rwsem_read_intr, &dpa_rwsem))) return rc; =20 - if (validate_region_offset(cxlr, offset)) - return -EINVAL; - - offset -=3D cxlr->params.cache_size; - rc =3D region_offset_to_dpa_result(cxlr, offset, &result); - if (rc || !result.cxlmd || result.dpa =3D=3D ULLONG_MAX) { + /* + * Retrieve memdev and DPA data again in case that the data + * has been changed before holding locks. + */ + rc =3D cxl_region_poison_lookup_locked(cxlr, offset, &res2); + if (rc || res2.cxlmd !=3D res1.cxlmd || res2.dpa !=3D res1.dpa) { dev_dbg(&cxlr->dev, - "Failed to resolve DPA for region offset %#llx rc %d\n", - offset, rc); - - return rc ? rc : -EINVAL; + "Error injection raced region reconfiguration: %d", rc); + return -ENXIO; } =20 - return cxl_inject_poison_locked(result.cxlmd, result.dpa); + return cxl_inject_poison_locked(res2.cxlmd, res2.dpa); } =20 DEFINE_DEBUGFS_ATTRIBUTE(cxl_poison_inject_fops, NULL, @@ -4109,10 +4155,19 @@ DEFINE_DEBUGFS_ATTRIBUTE(cxl_poison_inject_fops, NU= LL, =20 static int cxl_region_debugfs_poison_clear(void *data, u64 offset) { - struct dpa_result result =3D { .dpa =3D ULLONG_MAX, .cxlmd =3D NULL }; struct cxl_region *cxlr =3D data; + struct dpa_result res1, res2; int rc; =20 + /* To retrieve the correct memdev */ + rc =3D cxl_region_poison_lookup(cxlr, offset, &res1); + if (rc) + return rc; + + ACQUIRE(device_intr, devlock)(&res1.cxlmd->dev); + if ((rc =3D ACQUIRE_ERR(device_intr, &devlock))) + return rc; + ACQUIRE(rwsem_read_intr, region_rwsem)(&cxl_rwsem.region); if ((rc =3D ACQUIRE_ERR(rwsem_read_intr, ®ion_rwsem))) return rc; @@ -4121,20 +4176,18 @@ static int cxl_region_debugfs_poison_clear(void *da= ta, u64 offset) if ((rc =3D ACQUIRE_ERR(rwsem_read_intr, &dpa_rwsem))) return rc; =20 - if (validate_region_offset(cxlr, offset)) - return -EINVAL; - - offset -=3D cxlr->params.cache_size; - rc =3D region_offset_to_dpa_result(cxlr, offset, &result); - if (rc || !result.cxlmd || result.dpa =3D=3D ULLONG_MAX) { + /* + * Retrieve memdev and DPA data again in case that the data + * has been changed before holding locks. + */ + rc =3D cxl_region_poison_lookup_locked(cxlr, offset, &res2); + if (rc || res2.cxlmd !=3D res1.cxlmd || res2.dpa !=3D res1.dpa) { dev_dbg(&cxlr->dev, - "Failed to resolve DPA for region offset %#llx rc %d\n", - offset, rc); - - return rc ? rc : -EINVAL; + "Error clearing raced region reconfiguration: %d", rc); + return -ENXIO; } =20 - return cxl_clear_poison_locked(result.cxlmd, result.dpa); + return cxl_clear_poison_locked(res2.cxlmd, res2.dpa); } =20 DEFINE_DEBUGFS_ATTRIBUTE(cxl_poison_clear_fops, NULL, --=20 2.43.0 From nobody Wed Apr 8 02:55:24 2026 Received: from sender4-pp-o94.zoho.com (sender4-pp-o94.zoho.com [136.143.188.94]) (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 30C5838D6BA; Tue, 10 Mar 2026 16:00:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.94 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773158411; cv=pass; b=RHcgYl9HrrgWGsmUJXgTzel5geHf935VNhdrIUCQt+G+EMEyxPPjZzhjRTFKd9bAeukf7OXAAWaUN0Bamw3eDlrTFDrl+482HtQ4nEUOdBKaww24PAcT0kIffZ1lgv+g/hCZZEKMkqL4C66OrfGlHOCnN7/Dkc1aLCFJJh9CaL4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773158411; c=relaxed/simple; bh=B69MXGhvDuVx2QdO2KWxE7ethA7YE2X4K6HHkzXzeDk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EZok8noH/4zlUib0JpxT1iq/7nk7xOVq7e9j5unHhUcWL3kw+2wF46IEri8y5WgR4ZCVXbEoQVISnC5WtlYOWw8C3PnN86Otwt6VA/rx4zVTVIZqUQu67th5tXbVoeuYbYOThkbn4X2Gk9kKYQHJyqn+zzId31t8rKceNi1MGEs= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com; spf=pass smtp.mailfrom=zohomail.com; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@zohomail.com header.b=AkMAwTbF; arc=pass smtp.client-ip=136.143.188.94 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=zohomail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@zohomail.com header.b="AkMAwTbF" ARC-Seal: i=1; a=rsa-sha256; t=1773158317; cv=none; d=zohomail.com; s=zohoarc; b=SrlYqapn7+Hn/ymGzhTot5+Lqn4XQ22ld3HWEkfRd6x5y/sbCBF1R80Fl87aWwY0d4PZoumN6yDmsOCtdSZdWfM/a33Tg1FcDcymNNhdpfMi5XgC+tx3NWiHkfRfUonzCyAkNHVJLzKEL6oQiTc7FXDRmXHiqNAzl16gveo+CVg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773158317; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=ABwn0NX1NC5NAWUdwU1PCbWnVWctUN2DSjptBI98gAI=; b=mhfrkv3IMJsLvwFgbGmBCnS2gB73v0LY2XJyp/ZgcqdtH2QeaV1PTB7zMLo7c+Pxb6t+hvbWgclC8+6UDKwzNwE0pwwWdtn3MJDy3NhRlHH2+6bIOlRTVXX6aTPNx3tm9vcsOebuQ+ZsF4byPuppNcsPk5vfv0OUWkfTPrdPn6c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=zohomail.com; spf=pass smtp.mailfrom=ming.li@zohomail.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1773158317; s=zm2022; d=zohomail.com; i=ming.li@zohomail.com; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Feedback-ID:Reply-To; bh=ABwn0NX1NC5NAWUdwU1PCbWnVWctUN2DSjptBI98gAI=; b=AkMAwTbFgz69aAUIGsrgnX24zZbcVkqkSWpy4bTuoCLqxtKLCtm53hHHp36iPOo0 satO7f9jMhUljcbsPTSvuiDnGT2H0bBp8qii4xOzoGipJ+pM3L9gLshbqFR+kJuDnQp 18dg6WLcIX4YMb9dmK8SKMwKT4CsB0Um4pT6AA9o= Received: by mx.zohomail.com with SMTPS id 1773158316399469.1017203729534; Tue, 10 Mar 2026 08:58:36 -0700 (PDT) From: Li Ming Date: Tue, 10 Mar 2026 23:57:56 +0800 Subject: [PATCH 4/7] cxl/pci: Hold memdev lock in cxl_event_trace_record() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260310-fix_access_endpoint_without_drv_check-v1-4-94fe919a0b87@zohomail.com> References: <20260310-fix_access_endpoint_without_drv_check-v1-0-94fe919a0b87@zohomail.com> In-Reply-To: <20260310-fix_access_endpoint_without_drv_check-v1-0-94fe919a0b87@zohomail.com> To: Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Davidlohr Bueso , Jonathan Cameron , Dave Jiang , Alison Schofield , Vishal Verma , Ira Weiny , Dan Williams , Bjorn Helgaas , Ben Cheatham Cc: driver-core@lists.linux.dev, linux-kernel@vger.kernel.org, linux-cxl@vger.kernel.org, Jonathan Cameron , Li Ming X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1773158297; l=2496; i=ming.li@zohomail.com; s=20260210; h=from:subject:message-id; bh=B69MXGhvDuVx2QdO2KWxE7ethA7YE2X4K6HHkzXzeDk=; b=9Oaf8Zeq6n9zIX9Mz4oJc64SpbAOLIWmnujeZCf8tPEMsASzasSbTPfZB58DPdXN2gCqsikcG PcdsbVPzMsqCtWwYb6HzC5ddPJ3VOClSTZVhTxPHeAWEWOPCTKRSngA X-Developer-Key: i=ming.li@zohomail.com; a=ed25519; pk=JfhrdHjyYJMXt47Hy8d/fsqZuhGPD4Z3whV5lTfVvhE= Feedback-ID: rr080112287f67c2effa747dbf4922dc7e0000fba9dd2d0d84fe57357c7a82ab048c63d3a73973f06ca29dccf5:zu080112271dd6beed9fd716b19781ada30000ad318f754e7c3bf55d799c6721cb623d758f341fe889415b9c:rf0801122da949286e68b8b5149f7f4e700000c87dfeb6bddfe4884cf120ed08bb83742f86d8ed438a252e1967d14a552072:ZohoMail X-ZohoMailClient: External This is a preparatory patch for the following changes. To enable endpoint validity checks in cxl_dpa_to_region(). cxl_dpa_to_region() has to require caller to hold CXL memdev lock to ensure the CXL memdev probing is completed. So holding the given CXL memdev lock before invoking cxl_dpa_to_region() in cxl_event_trace_record(). Suggested-by: Dan Williams Signed-off-by: Li Ming Reviewed-by: Dan Williams Reviewed-by: Dave Jiang --- drivers/cxl/core/mbox.c | 5 +++-- drivers/cxl/cxlmem.h | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/cxl/core/mbox.c b/drivers/cxl/core/mbox.c index e7a6452bf544..3f34bbabf4d3 100644 --- a/drivers/cxl/core/mbox.c +++ b/drivers/cxl/core/mbox.c @@ -893,7 +893,7 @@ int cxl_enumerate_cmds(struct cxl_memdev_state *mds) } EXPORT_SYMBOL_NS_GPL(cxl_enumerate_cmds, "CXL"); =20 -void cxl_event_trace_record(const struct cxl_memdev *cxlmd, +void cxl_event_trace_record(struct cxl_memdev *cxlmd, enum cxl_event_log_type type, enum cxl_event_type event_type, const uuid_t *uuid, union cxl_event *evt) @@ -920,6 +920,7 @@ void cxl_event_trace_record(const struct cxl_memdev *cx= lmd, * translations. Take topology mutation locks and lookup * { HPA, REGION } from { DPA, MEMDEV } in the event record. */ + guard(device)(&cxlmd->dev); guard(rwsem_read)(&cxl_rwsem.region); guard(rwsem_read)(&cxl_rwsem.dpa); =20 @@ -968,7 +969,7 @@ void cxl_event_trace_record(const struct cxl_memdev *cx= lmd, } EXPORT_SYMBOL_NS_GPL(cxl_event_trace_record, "CXL"); =20 -static void __cxl_event_trace_record(const struct cxl_memdev *cxlmd, +static void __cxl_event_trace_record(struct cxl_memdev *cxlmd, enum cxl_event_log_type type, struct cxl_event_record_raw *record) { diff --git a/drivers/cxl/cxlmem.h b/drivers/cxl/cxlmem.h index e21d744d639b..7a34a19c02c8 100644 --- a/drivers/cxl/cxlmem.h +++ b/drivers/cxl/cxlmem.h @@ -864,7 +864,7 @@ void set_exclusive_cxl_commands(struct cxl_memdev_state= *mds, void clear_exclusive_cxl_commands(struct cxl_memdev_state *mds, unsigned long *cmds); void cxl_mem_get_event_records(struct cxl_memdev_state *mds, u32 status); -void cxl_event_trace_record(const struct cxl_memdev *cxlmd, +void cxl_event_trace_record(struct cxl_memdev *cxlmd, enum cxl_event_log_type type, enum cxl_event_type event_type, const uuid_t *uuid, union cxl_event *evt); --=20 2.43.0 From nobody Wed Apr 8 02:55:24 2026 Received: from sender4-pp-o94.zoho.com (sender4-pp-o94.zoho.com [136.143.188.94]) (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 C461A3BAD9D; Tue, 10 Mar 2026 16:00:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.94 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773158429; cv=pass; b=IxQa5dUu1nA8ss5Y7TuWXuQEOaXLxtNd2QaXNLccyfyzbDowCBuzXbfecgnwFpkftDtrn+5W0nhQY3EIVr9FNeSicIrwavYYfYmymMI2KFhoz68aQX5z+gj4ms8HZQ5J81hNcqFQ6FlQ5dUk+/++iU9BeQ2/aDogHAtZcVeTO9E= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773158429; c=relaxed/simple; bh=ENrMXJhDkBtkxWOCe7WzES9mf0opa1WZobtvS83lPHQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Z5r4AZsKKqRmL2yT7O+kxN3mshRgc1c8iMLVkpg/M4cqPjQ2/Zpg2wYO9mpZL7myDiygU8UuTl1Da6kTFg0SOMJLZ1NxPXcOQAZHjRpbzdv4iarFdMfaRqPFHHT3O4h9cNJTQehvue6JzgDfjw7MA7rPGnQca8KB+XhYphnTvZo= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com; spf=pass smtp.mailfrom=zohomail.com; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@zohomail.com header.b=e9qX/7qo; arc=pass smtp.client-ip=136.143.188.94 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=zohomail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@zohomail.com header.b="e9qX/7qo" ARC-Seal: i=1; a=rsa-sha256; t=1773158321; cv=none; d=zohomail.com; s=zohoarc; b=go+xrsTKq5Rmbj2wOYV6QDY0UcEQYEIjL9HydqwoF1ugYxgdyVeQm2GnIx0yXLUGVpp9GE5ku8wISZE9SbcX+uA7u/TLomw28rrvYYgUxnIO4srOciFcPLx6fx7lTWU3/ivd1yMNUWN15xjLWGIesmqSeDNEevbHYHuccjCFG1w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773158321; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=g/6G297wu4AB+PoDj1KHKQ9lVhY2UMABCIj6fshRpm0=; b=TT1Yg6rrLtV5kjqQ/yZvL8ds8K32ZLkmLKZJ9BvvxBQwuoUein9BB67TqfJJsn4G0fFSVxtE1asfzrW9AQoLUuQOWbpo2BC8FP3tKyg9jZAQWMDEaWoiClxfHIRREu9vIIPuda3cn7tiln69K5JPdGsRfLetEF9LObAGYowAxc8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=zohomail.com; spf=pass smtp.mailfrom=ming.li@zohomail.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1773158321; s=zm2022; d=zohomail.com; i=ming.li@zohomail.com; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Feedback-ID:Reply-To; bh=g/6G297wu4AB+PoDj1KHKQ9lVhY2UMABCIj6fshRpm0=; b=e9qX/7qo3BxPBVtzcO5ZXH9GDN2CjB+mnMgvXUHYnh2zuuowDDhoV06APD4SsW9a dRhQZcjyJKjFrPNBbOgDCCH0FFI6otKx8shZtX9C/93s82mZ5Aqv2vAyNbs5FCWXwdV 6VUjodeyHho1oCnJUij6JHVXbDeAFGK+4m+GW3aY= Received: by mx.zohomail.com with SMTPS id 1773158320012551.5054323166485; Tue, 10 Mar 2026 08:58:40 -0700 (PDT) From: Li Ming Date: Tue, 10 Mar 2026 23:57:57 +0800 Subject: [PATCH 5/7] cxl/region: Ensure endpoint is valid in cxl_dpa_to_region() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260310-fix_access_endpoint_without_drv_check-v1-5-94fe919a0b87@zohomail.com> References: <20260310-fix_access_endpoint_without_drv_check-v1-0-94fe919a0b87@zohomail.com> In-Reply-To: <20260310-fix_access_endpoint_without_drv_check-v1-0-94fe919a0b87@zohomail.com> To: Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Davidlohr Bueso , Jonathan Cameron , Dave Jiang , Alison Schofield , Vishal Verma , Ira Weiny , Dan Williams , Bjorn Helgaas , Ben Cheatham Cc: driver-core@lists.linux.dev, linux-kernel@vger.kernel.org, linux-cxl@vger.kernel.org, Jonathan Cameron , Li Ming X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1773158297; l=2777; i=ming.li@zohomail.com; s=20260210; h=from:subject:message-id; bh=ENrMXJhDkBtkxWOCe7WzES9mf0opa1WZobtvS83lPHQ=; b=Ly3iLYWpu8d0ZgXTqBt/7LHCa28uYFAsKP/78fB91Z7nyjdyAeMgH5p/otUJHHVo/biyQt3nH zGpStkAwbJgAnuxuvX12BkU4x39yegciJ/xHl0eXJcM4Fphi96FZhPo X-Developer-Key: i=ming.li@zohomail.com; a=ed25519; pk=JfhrdHjyYJMXt47Hy8d/fsqZuhGPD4Z3whV5lTfVvhE= Feedback-ID: rr080112285349850d3ae57fbdd47f5a5900002f047a659bc7bc239898fc4a7fb3e75e9528f8701a7d0be3c8ce:zu08011227df2c56caa742594e4f6ca00f00005d68f34df780e8f1ae03a404861fd0257791dbbe34ffdbd7bd:rf0801122d947b1e73def65f7241dfac920000c2ec091a182fdfe9f193c24dc9285aeb2aa0868684b71b5eb940bd043cc38f:ZohoMail X-ZohoMailClient: External cxl_dpa_to_region() needs to access the endpoint of the given CXL memdev to confirm whether the CXL memdev has memory range attached to a CXL region. But it is possible to be called before endpoint allocation or after the CXL memdev probing failure. In these two cases, cxlmd->endpoint is invalid. To solve the problem, cxl_dpa_to_region() requires that callers have to hold the given CXL memdev lock, it guarantees the CXL memdev probing has completed. And cxl_dpa_to_region() will check the given CXL memdev driver binding status, if the memdev has bound to the driver, the endpoint is guaranteed to be valid. This checking also requires the CXL memdev lock held. Suggested-by: Dan Williams Signed-off-by: Li Ming Reviewed-by: Dave Jiang --- drivers/cxl/core/core.h | 4 ++-- drivers/cxl/core/region.c | 11 +++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/drivers/cxl/core/core.h b/drivers/cxl/core/core.h index 5b0570df0fd9..fa8402be860f 100644 --- a/drivers/cxl/core/core.h +++ b/drivers/cxl/core/core.h @@ -47,7 +47,7 @@ int cxl_decoder_detach(struct cxl_region *cxlr, int cxl_region_init(void); void cxl_region_exit(void); int cxl_get_poison_by_endpoint(struct cxl_port *port); -struct cxl_region *cxl_dpa_to_region(const struct cxl_memdev *cxlmd, u64 d= pa); +struct cxl_region *cxl_dpa_to_region(struct cxl_memdev *cxlmd, u64 dpa); u64 cxl_dpa_to_hpa(struct cxl_region *cxlr, const struct cxl_memdev *cxlmd, u64 dpa); =20 @@ -58,7 +58,7 @@ static inline u64 cxl_dpa_to_hpa(struct cxl_region *cxlr, return ULLONG_MAX; } static inline -struct cxl_region *cxl_dpa_to_region(const struct cxl_memdev *cxlmd, u64 d= pa) +struct cxl_region *cxl_dpa_to_region(struct cxl_memdev *cxlmd, u64 dpa) { return NULL; } diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c index 806512dfab07..c555e3ae8b62 100644 --- a/drivers/cxl/core/region.c +++ b/drivers/cxl/core/region.c @@ -2947,16 +2947,19 @@ static int __cxl_dpa_to_region(struct device *dev, = void *arg) return 1; } =20 -struct cxl_region *cxl_dpa_to_region(const struct cxl_memdev *cxlmd, u64 d= pa) +struct cxl_region *cxl_dpa_to_region(struct cxl_memdev *cxlmd, u64 dpa) { struct cxl_dpa_to_region_context ctx; - struct cxl_port *port; + struct cxl_port *port =3D cxlmd->endpoint; + + device_lock_assert(&cxlmd->dev); + if (!cxlmd->dev.driver) + return NULL; =20 ctx =3D (struct cxl_dpa_to_region_context) { .dpa =3D dpa, }; - port =3D cxlmd->endpoint; - if (port && is_cxl_endpoint(port) && cxl_num_decoders_committed(port)) + if (cxl_num_decoders_committed(port)) device_for_each_child(&port->dev, &ctx, __cxl_dpa_to_region); =20 return ctx.cxlr; --=20 2.43.0 From nobody Wed Apr 8 02:55:24 2026 Received: from sender4-pp-o94.zoho.com (sender4-pp-o94.zoho.com [136.143.188.94]) (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 AE7F73B961F; Tue, 10 Mar 2026 16:00:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.94 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773158451; cv=pass; b=C1PMOomIY8QymauMfPjTOGFBQ2Jianpgs0n9jU/1sAN4tW+epA8nEhumcVesJcCJIUaVJy+KGxbWukPjZT+rPMJKIB+FO5ugmFu5pdWytXF9v76EmS0l+scG/0OoEde/rVN8Zv0VXpjkaQo4mBFREjQuwYWcpPCX/0VMAtjuM/c= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773158451; c=relaxed/simple; bh=gJIldBxJTJwrhD2wi8vJwHvkBYFJIDTvTezNZFVbbus=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PQnzUbhdFohpJoQ8+BG0UPvAuxjsQn1bJpVYiLI5CPLuncYfcFW2YdFLPIIJJfxHA61x2LxQP04zm7hxeFBqbLw3zIUquwhf+2c9QpdJDdZcy+fJ0kyq51l///3Hes29zsMQkiWbew2TEpjpvWOkCvSfWRGuGUm9Gs6XeCLH8rg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com; spf=pass smtp.mailfrom=zohomail.com; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@zohomail.com header.b=VaEw4n/F; arc=pass smtp.client-ip=136.143.188.94 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=zohomail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@zohomail.com header.b="VaEw4n/F" ARC-Seal: i=1; a=rsa-sha256; t=1773158325; cv=none; d=zohomail.com; s=zohoarc; b=NKCK4ZytXUVu4VXXCtr6SgpaJU0SWS3J5lLO+lAvqgT2IRzPoIVoZmlqBaVcsmOXz1Pj/KPluM9ak5ROAlPfFjMo8mKY2VTmwA9c9R/msrQcYN9VY6rvv/A1P+LzIniuZ+nrMoFy9/u3KmdKG0PadXnbaH1PGkUf/d28N7rmKec= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773158325; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=Pnh5nC8/LJro4qNP/zkN11H/U/xj34QIgmeJ29VYt98=; b=TZ+Fta6aIhLqWUPvIL7cbgL3U8fm5TPLxa8m/1E7hZNBFf4lgol9QJaWfUkoa9unXFB12XJSyigiXUpR4BRjouiY6MguvYm3lufx1KYbih8XX1eULftaYTCw40/BWYGtywqQqbOuIOTbQ1JA8kDxwRKc2ELFGKsc14+O6YFV6Pk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=zohomail.com; spf=pass smtp.mailfrom=ming.li@zohomail.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1773158325; s=zm2022; d=zohomail.com; i=ming.li@zohomail.com; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Feedback-ID:Reply-To; bh=Pnh5nC8/LJro4qNP/zkN11H/U/xj34QIgmeJ29VYt98=; b=VaEw4n/FJ9Zxo25PRltkQV1BeMyqA/9+Gw6+FRdLqq9y5pby4b7bvBDotsiGYptf 0dJL/6CZxYHfPwRTy0Snhn6gmN1A6ty0qYA50FMT6RN6bnSx0odqBYL4scP0QtBcmHh NohCkbJ/8DTOg34LiNulz0cI2XwDcOKrgNRkJ53U= Received: by mx.zohomail.com with SMTPS id 1773158323649820.767978388912; Tue, 10 Mar 2026 08:58:43 -0700 (PDT) From: Li Ming Date: Tue, 10 Mar 2026 23:57:58 +0800 Subject: [PATCH 6/7] cxl/pci: Check memdev driver binding status in cxl_reset_done() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260310-fix_access_endpoint_without_drv_check-v1-6-94fe919a0b87@zohomail.com> References: <20260310-fix_access_endpoint_without_drv_check-v1-0-94fe919a0b87@zohomail.com> In-Reply-To: <20260310-fix_access_endpoint_without_drv_check-v1-0-94fe919a0b87@zohomail.com> To: Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Davidlohr Bueso , Jonathan Cameron , Dave Jiang , Alison Schofield , Vishal Verma , Ira Weiny , Dan Williams , Bjorn Helgaas , Ben Cheatham Cc: driver-core@lists.linux.dev, linux-kernel@vger.kernel.org, linux-cxl@vger.kernel.org, Jonathan Cameron , Li Ming X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1773158297; l=1235; i=ming.li@zohomail.com; s=20260210; h=from:subject:message-id; bh=gJIldBxJTJwrhD2wi8vJwHvkBYFJIDTvTezNZFVbbus=; b=oYeKqnw2zbpigLP2RCEfoTymUkQPkL197I7pziy3Ojt/YQ+839KbxeNkDiJCFOBrKDJfgtXzP dyXScEsHx8eDxflMD8LC743TL+1BkurepkGwcaNa7gROZkkfmcwJIGZ X-Developer-Key: i=ming.li@zohomail.com; a=ed25519; pk=JfhrdHjyYJMXt47Hy8d/fsqZuhGPD4Z3whV5lTfVvhE= Feedback-ID: rr08011228499b0d183bc0108b8f2e19410000750d81cab8f9f677f6aed14a55597fb378256618360490065ba2:zu08011227574fc12cb677958417c0791e000024fe5500685b0e90edc25e1d277976831b8f18d9499197d8cb:rf0801122d566657bd15f8dbf36b0f0620000053083ec2d2a51c0ba3a04b8b9a8fbe1ab772b8ed694bf408691fd6232cf820:ZohoMail X-ZohoMailClient: External cxl_reset_done() accesses the endpoint of the corresponding CXL memdev without endpoint validity checking. By default, cxlmd->endpoint is initialized to -ENXIO, if cxl_reset_done() is triggered after the corresponding CXL memdev probing failed, this results in access to an invalid endpoint. CXL subsystem can always check CXL memdev driver binding status to confirm its endpoint validity. So adding the CXL memdev driver checking inside cxl_reset_done() to avoid accessing an invalid endpoint. Fixes: 934edcd436dc ("cxl: Add post-reset warning if reset results in loss = of previously committed HDM decoders") Signed-off-by: Li Ming Reviewed-by: Dan Williams Reviewed-by: Dave Jiang --- drivers/cxl/pci.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/cxl/pci.c b/drivers/cxl/pci.c index fbb300a01830..a5922116db2a 100644 --- a/drivers/cxl/pci.c +++ b/drivers/cxl/pci.c @@ -1043,6 +1043,9 @@ static void cxl_reset_done(struct pci_dev *pdev) * that no longer exists. */ guard(device)(&cxlmd->dev); + if (!cxlmd->dev.driver) + return; + if (cxlmd->endpoint && cxl_endpoint_decoder_reset_detected(cxlmd->endpoint)) { dev_crit(dev, "SBR happened without memory regions removal.\n"); --=20 2.43.0 From nobody Wed Apr 8 02:55:24 2026 Received: from sender4-pp-o94.zoho.com (sender4-pp-o94.zoho.com [136.143.188.94]) (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 025EB3BC685; Tue, 10 Mar 2026 16:01:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.94 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773158467; cv=pass; b=OWcCIKBQKSdbQYKvSsruT8Fxp431zPoHASUSPF0w0aiqspUGKIg2i53qAzm0Y8828qMNc2zKdlGUOz1lRkXMOoTjiMwILL1H2nPD2ZkIJrjxPe0GZLQWqjf9DFsglkvR9IK+ki58HrlhxgFprumfkiqRLCkpP+23qknU7vvpgno= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773158467; c=relaxed/simple; bh=l0EZGmsTcf36X0E0XndNYafXUD0iSTFs/Ybsl7j/4wg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CXwXjhYKvphrW++PHV8AYm53NkCzY0lOkp7sZw47y2wCnaaHJ72odJV/C5yc3gudhZ1l5tjixPJCn31omZaShUf8OCcrpUe62igm/T+cYJ6//evty3C/vTjKSs0tzFEf4WyuOpPpcIVvZE/kHdeQdfwLXi9Z/NlTHKckNZuNud0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com; spf=pass smtp.mailfrom=zohomail.com; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@zohomail.com header.b=aloDEkfq; arc=pass smtp.client-ip=136.143.188.94 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=zohomail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@zohomail.com header.b="aloDEkfq" ARC-Seal: i=1; a=rsa-sha256; t=1773158329; cv=none; d=zohomail.com; s=zohoarc; b=FzM16uaNRsGEmv1j0sKR+oAZ35eM6X+xCaV5ghJt6NoXwzAJEdqNnQzRQKx0tYhdR3xKBPA6hd3SgvOOCS5nag1FQbU711rvajWtZHc1LHJLW9L6piyf3W9D2Ocm73SPAfep3OMRg80Ivvxdwr3Y0TrwL3dz5KoJjldQXHMI8/c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773158329; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=Or+ZhAMTBzvjsWuvdXuHp+0M//ZrD+z05kSAxIka534=; b=n75BaAJKbWdR0WgT4GGYoF8ZrTHIiZtTqhKLrpdt2LdxNhry9K9QrZjvx9Z95jkSJIx0OP3BdwMJlgewwpGt7KwIPQsNDzGaqMDfVrnmliv/Dn0bDYGMBvN1feycNr8brmOdRYpXEUb3DIlqReNfEeFE9dIvdWX5uy/iWQRELH8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=zohomail.com; spf=pass smtp.mailfrom=ming.li@zohomail.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1773158329; s=zm2022; d=zohomail.com; i=ming.li@zohomail.com; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Feedback-ID:Reply-To; bh=Or+ZhAMTBzvjsWuvdXuHp+0M//ZrD+z05kSAxIka534=; b=aloDEkfqnQ6nql7y0ZQSmqdgK0YRJqPp//XKfVKo7imGRexqrrzwB1spNvdMy9MQ iGOYW84j5M+sFcJ6vltcIfd/jFWwwsODGubZHbKUJMg2Rfo/y2oCFF4g43yoBR5qN/i nYP9JzrKS25tHIAOwBQzPXIZcXg+tGrI+9w+24eM= Received: by mx.zohomail.com with SMTPS id 1773158327256164.06898766243387; Tue, 10 Mar 2026 08:58:47 -0700 (PDT) From: Li Ming Date: Tue, 10 Mar 2026 23:57:59 +0800 Subject: [PATCH 7/7] cxl/port: Reset cxlmd->endpoint to -ENXIO by default Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260310-fix_access_endpoint_without_drv_check-v1-7-94fe919a0b87@zohomail.com> References: <20260310-fix_access_endpoint_without_drv_check-v1-0-94fe919a0b87@zohomail.com> In-Reply-To: <20260310-fix_access_endpoint_without_drv_check-v1-0-94fe919a0b87@zohomail.com> To: Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Davidlohr Bueso , Jonathan Cameron , Dave Jiang , Alison Schofield , Vishal Verma , Ira Weiny , Dan Williams , Bjorn Helgaas , Ben Cheatham Cc: driver-core@lists.linux.dev, linux-kernel@vger.kernel.org, linux-cxl@vger.kernel.org, Jonathan Cameron , Li Ming X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1773158297; l=2159; i=ming.li@zohomail.com; s=20260210; h=from:subject:message-id; bh=l0EZGmsTcf36X0E0XndNYafXUD0iSTFs/Ybsl7j/4wg=; b=SrHZ707az/xs/EYPUmfboK4WJhBsFW4feGbAP53xKzFaac55tdRs78uFwwB1wYsmxVR60tIuy fC8PSE+Mz/cD19Fcm3vAkCquwVBPHkKCBTVvmJxmYFhZlozATq1+tEn X-Developer-Key: i=ming.li@zohomail.com; a=ed25519; pk=JfhrdHjyYJMXt47Hy8d/fsqZuhGPD4Z3whV5lTfVvhE= Feedback-ID: rr080112282b6530e94dae5804efd3785600006e31b47c2b5aae09232b254a4bd9182b080334dd0fd824d33a8d:zu08011227cbbb50cae64841755ed0894b0000dad46b9af661aeafbcd8e5f654639e165bf1ba1f0bef593437:rf0801122d5ca919e7d48e4540bef9d3c900009b6666f33cd9046ca19669f18119022ca337c4ed2b79b7a1166c7bee699a2e:ZohoMail X-ZohoMailClient: External cxlmd->endpoint is set to -ENXIO by default, This intentional invalid value ensures that any unintended access to the endpoint will be detectable. But CXL driver didn't reset it to the default value when the endpoint is released in delete_endpoint(). Besides, cxlmd->endpoint is updated to point to an valid endpoint in cxl_port_add(), but if the device_add() in cxl_port_add() fails, the endpoint will be released, but cxlmd->endpoint remains pointing to the released endpoint, it may introduce a potential use-after-free issue. Fixes: 3d8be8b398e3 ("cxl: Set cxlmd->endpoint before adding port device") Fixes: 29317f8dc6ed ("cxl/mem: Introduce cxl_memdev_attach for CXL-dependen= t operation") Signed-off-by: Li Ming --- drivers/cxl/core/port.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/cxl/core/port.c b/drivers/cxl/core/port.c index 0c5957d1d329..ec3cb62b44b7 100644 --- a/drivers/cxl/core/port.c +++ b/drivers/cxl/core/port.c @@ -834,11 +834,14 @@ static int cxl_port_add(struct cxl_port *port, struct cxl_dport *parent_dport) { struct device *dev __free(put_device) =3D &port->dev; + struct cxl_memdev *cxlmd =3D NULL; int rc; =20 if (is_cxl_memdev(port->uport_dev)) { - struct cxl_memdev *cxlmd =3D to_cxl_memdev(port->uport_dev); - struct cxl_dev_state *cxlds =3D cxlmd->cxlds; + struct cxl_dev_state *cxlds; + + cxlmd =3D to_cxl_memdev(port->uport_dev); + cxlds =3D cxlmd->cxlds; =20 rc =3D dev_set_name(dev, "endpoint%d", port->id); if (rc) @@ -865,8 +868,11 @@ static int cxl_port_add(struct cxl_port *port, } =20 rc =3D device_add(dev); - if (rc) + if (rc) { + if (cxlmd) + cxlmd->endpoint =3D ERR_PTR(-ENXIO); return rc; + } =20 /* Inhibit the cleanup function invoked */ dev =3D NULL; @@ -1425,7 +1431,7 @@ static void delete_endpoint(void *data) devm_release_action(host, cxl_unlink_uport, endpoint); devm_release_action(host, unregister_port, endpoint); } - cxlmd->endpoint =3D NULL; + cxlmd->endpoint =3D ERR_PTR(-ENXIO); } put_device(&endpoint->dev); put_device(host); --=20 2.43.0