Blame SOURCES/0061-libcxl-fix-potential-NULL-dereference-in-cxl_memdev_.patch

2eb93d
From c55b18181281b2fffadb9e0e8955d74b8b719349 Mon Sep 17 00:00:00 2001
2eb93d
From: Vishal Verma <vishal.l.verma@intel.com>
2eb93d
Date: Fri, 17 Dec 2021 19:25:11 -0700
2eb93d
Subject: [PATCH 061/217] libcxl: fix potential NULL dereference in
2eb93d
 cxl_memdev_nvdimm_bridge_active()
2eb93d
2eb93d
Static analysis points out that the function above has a check for
2eb93d
'if (!bridge)', implying that bridge maybe NULL, but it is dereferenced
2eb93d
before the check, which could result in a NULL dereference.
2eb93d
2eb93d
Fix this by moving any accesses to the bridge structure after the NULL
2eb93d
check.
2eb93d
2eb93d
Link: https://lore.kernel.org/r/20211218022511.314928-1-vishal.l.verma@intel.com
2eb93d
Cc: Dan Williams <dan.j.williams@intel.com>
2eb93d
Reviewed-by: Dan Williams <dan.j.williams@intel.com>
2eb93d
Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
2eb93d
---
2eb93d
 cxl/lib/libcxl.c | 7 +++++--
2eb93d
 1 file changed, 5 insertions(+), 2 deletions(-)
2eb93d
2eb93d
diff --git a/cxl/lib/libcxl.c b/cxl/lib/libcxl.c
2eb93d
index f0664be..3390eb9 100644
2eb93d
--- a/cxl/lib/libcxl.c
2eb93d
+++ b/cxl/lib/libcxl.c
2eb93d
@@ -420,12 +420,15 @@ CXL_EXPORT int cxl_memdev_nvdimm_bridge_active(struct cxl_memdev *memdev)
2eb93d
 {
2eb93d
 	struct cxl_ctx *ctx = cxl_memdev_get_ctx(memdev);
2eb93d
 	struct cxl_nvdimm_bridge *bridge = memdev->bridge;
2eb93d
-	char *path = bridge->dev_buf;
2eb93d
-	int len = bridge->buf_len;
2eb93d
+	char *path;
2eb93d
+	int len;
2eb93d
 
2eb93d
 	if (!bridge)
2eb93d
 		return 0;
2eb93d
 
2eb93d
+	path = bridge->dev_buf;
2eb93d
+	len = bridge->buf_len;
2eb93d
+
2eb93d
 	if (snprintf(path, len, "%s/driver", bridge->dev_path) >= len) {
2eb93d
 		err(ctx, "%s: nvdimm bridge buffer too small!\n",
2eb93d
 				cxl_memdev_get_devname(memdev));
2eb93d
-- 
2eb93d
2.27.0
2eb93d