All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 1/1] EDAC: Fix lockdep splat caused by edac features code
@ 2025-06-26 10:13 shiju.jose
  2025-06-26 12:51 ` Jonathan Cameron
  2025-06-28 14:54 ` Borislav Petkov
  0 siblings, 2 replies; 4+ messages in thread
From: shiju.jose @ 2025-06-26 10:13 UTC (permalink / raw)
  To: linux-edac, bp, tony.luck, lenb, leo.duran, Yazen.Ghannam,
	mchehab, dave.jiang, jonathan.cameron
  Cc: linux-cxl, linuxarm, tanxiaofei, prime.zeng, shiju.jose

From: Shiju Jose <shiju.jose@huawei.com>

Fix the lockdep splat caused by missing sysfs_attr_init() calls
for the recently added EDAC feature's sysfs attributes.

In lockdep_init_map_type(), the check for the lock-class key
if (!static_obj(key) && !is_dynamic_key(key)) causes the splat.

Backtrace:
RIP: 0010:lockdep_init_map_type+0x131/0x270
Call Trace:
 __kernfs_create_file+0x77/0xf0
sysfs_add_file_mode_ns+0x86/0x140
internal_create_group+0x1cc/0x4b0
internal_create_groups+0x42/0xa0
device_add+0x310/0x860
? __init_waitqueue_head+0x4a/0x60
edac_dev_register+0x3ff/0x480
devm_cxl_memdev_edac_register+0x509/0x640 [cxl_core]
? lock_acquire+0xc4/0x2d0
? find_held_lock+0x2b/0x80
? cxl_mem_probe+0x21e/0x360 [cxl_mem]
? cxl_mem_probe+0x21e/0x360 [cxl_mem]
? lockdep_hardirqs_on+0x78/0x100
? cxl_mem_probe+0x226/0x360 [cxl_mem]
cxl_mem_probe+0x226/0x360 [cxl_mem]

Fixes: f90b738166fe ("EDAC: Add scrub control feature")
Fixes: bcbd069b11b0 ("EDAC: Add a Error Check Scrub control feature")
Fixes: 699ea5219c4b ("EDAC: Add a memory repair control feature")
Reported-by: Dave Jiang <dave.jiang@intel.com>
Suggested-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Shiju Jose <shiju.jose@huawei.com>
---
Changes:
v1 -> v2
1. Changes for the feedback from Jonathan.
   https://lore.kernel.org/linux-edac/aa142386d0944955b742340b2454e114@huawei.com/T/#md430a9f146794152ac45de57d0cda65caa7f765b
  - Updated commit message.
  - Called sysfs_attr_init() before put the pointer in the array
    of attribute pointers.
---
 drivers/edac/ecs.c        | 4 +++-
 drivers/edac/mem_repair.c | 1 +
 drivers/edac/scrub.c      | 1 +
 3 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/edac/ecs.c b/drivers/edac/ecs.c
index 1d51838a60c1..51c451c7f0f0 100755
--- a/drivers/edac/ecs.c
+++ b/drivers/edac/ecs.c
@@ -170,8 +170,10 @@ static int ecs_create_desc(struct device *ecs_dev, const struct attribute_group
 		fru_ctx->dev_attr[ECS_RESET]		= EDAC_ECS_ATTR_WO(reset, fru);
 		fru_ctx->dev_attr[ECS_THRESHOLD]	= EDAC_ECS_ATTR_RW(threshold, fru);
 
-		for (i = 0; i < ECS_MAX_ATTRS; i++)
+		for (i = 0; i < ECS_MAX_ATTRS; i++) {
+			sysfs_attr_init(&fru_ctx->dev_attr[i].dev_attr.attr);
 			fru_ctx->ecs_attrs[i] = &fru_ctx->dev_attr[i].dev_attr.attr;
+		}
 
 		sprintf(fru_ctx->name, "%s%d", EDAC_ECS_FRU_NAME, fru);
 		group->name = fru_ctx->name;
diff --git a/drivers/edac/mem_repair.c b/drivers/edac/mem_repair.c
index d1a8caa85369..70a033a76233 100755
--- a/drivers/edac/mem_repair.c
+++ b/drivers/edac/mem_repair.c
@@ -333,6 +333,7 @@ static int mem_repair_create_desc(struct device *dev,
 	for (i = 0; i < MR_MAX_ATTRS; i++) {
 		memcpy(&ctx->mem_repair_dev_attr[i],
 		       &dev_attr[i], sizeof(dev_attr[i]));
+		sysfs_attr_init(&ctx->mem_repair_dev_attr[i].dev_attr.attr);
 		ctx->mem_repair_attrs[i] =
 			&ctx->mem_repair_dev_attr[i].dev_attr.attr;
 	}
diff --git a/drivers/edac/scrub.c b/drivers/edac/scrub.c
index e421d3ebd959..f9d02af2fc3a 100755
--- a/drivers/edac/scrub.c
+++ b/drivers/edac/scrub.c
@@ -176,6 +176,7 @@ static int scrub_create_desc(struct device *scrub_dev,
 	group = &scrub_ctx->group;
 	for (i = 0; i < SCRUB_MAX_ATTRS; i++) {
 		memcpy(&scrub_ctx->scrub_dev_attr[i], &dev_attr[i], sizeof(dev_attr[i]));
+		sysfs_attr_init(&scrub_ctx->scrub_dev_attr[i].dev_attr.attr);
 		scrub_ctx->scrub_attrs[i] = &scrub_ctx->scrub_dev_attr[i].dev_attr.attr;
 	}
 	sprintf(scrub_ctx->name, "%s%d", "scrub", instance);
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2025-06-30  8:36 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-26 10:13 [PATCH v2 1/1] EDAC: Fix lockdep splat caused by edac features code shiju.jose
2025-06-26 12:51 ` Jonathan Cameron
2025-06-28 14:54 ` Borislav Petkov
2025-06-30  8:36   ` Shiju Jose

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.