Skip to content

Commit b8a69e3

Browse files
davejianggregkh
authored andcommitted
cxl/features: Add check for no entries in cxl_feature_info
[ Upstream commit a375246 ] cxl EDAC calls cxl_feature_info() to get the feature information and if the hardware has no Features support, cxlfs may be passed in as NULL. [ 51.957498] BUG: kernel NULL pointer dereference, address: 0000000000000008 [ 51.965571] #PF: supervisor read access in kernel mode [ 51.971559] #PF: error_code(0x0000) - not-present page [ 51.977542] PGD 17e4f6067 P4D 0 [ 51.981384] Oops: Oops: 0000 [#1] SMP NOPTI [ 51.986300] CPU: 49 UID: 0 PID: 3782 Comm: systemd-udevd Not tainted 6.17.0dj test+ torvalds#64 PREEMPT(voluntary) [ 51.997355] Hardware name: <removed> [ 52.009790] RIP: 0010:cxl_feature_info+0xa/0x80 [cxl_core] Add a check for cxlfs before dereferencing it and return -EOPNOTSUPP if there is no cxlfs created due to no hardware support. Fixes: eb5dfcb ("cxl: Add support to handle user feature commands for set feature") Reviewed-by: Davidlohr Bueso <dave@stgolabs.net> Reviewed-by: Alison Schofield <alison.schofield@intel.com> Signed-off-by: Dave Jiang <dave.jiang@intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent 498c178 commit b8a69e3

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

drivers/cxl/core/features.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,9 @@ cxl_feature_info(struct cxl_features_state *cxlfs,
371371
{
372372
struct cxl_feat_entry *feat;
373373

374+
if (!cxlfs || !cxlfs->entries)
375+
return ERR_PTR(-EOPNOTSUPP);
376+
374377
for (int i = 0; i < cxlfs->entries->num_features; i++) {
375378
feat = &cxlfs->entries->ent[i];
376379
if (uuid_equal(uuid, &feat->uuid))

0 commit comments

Comments
 (0)