[PATCH 3/7] EDAC/device: Drop unnecessary and dangerous tasks of attributes
From: Thomas Weißschuh
Date: Mon Feb 23 2026 - 16:18:54 EST
These casts assume that the 'struct attribute' is at the beginning of
'struct edac_dev_sysfs_block_attribute'. This is can silently break
if the field is moved, either manually or through struct randomization.
Use proper member syntax to get the field address and drop the casts.
Signed-off-by: Thomas Weißschuh <linux@xxxxxxxxxxxxxx>
---
drivers/edac/edac_device_sysfs.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/drivers/edac/edac_device_sysfs.c b/drivers/edac/edac_device_sysfs.c
index 9cc466b78982..1e79f36a91fa 100644
--- a/drivers/edac/edac_device_sysfs.c
+++ b/drivers/edac/edac_device_sysfs.c
@@ -573,8 +573,7 @@ static void edac_device_delete_block(struct edac_device_ctl_info *edac_dev,
for (i = 0; i < block->nr_attribs; i++, sysfs_attrib++) {
/* remove each block_attrib file */
- sysfs_remove_file(&block->kobj,
- (struct attribute *) sysfs_attrib);
+ sysfs_remove_file(&block->kobj, &sysfs_attrib->attr);
}
}
@@ -734,7 +733,7 @@ static int edac_device_add_main_sysfs_attributes(
*/
while (sysfs_attrib->attr.name != NULL) {
err = sysfs_create_file(&edac_dev->kobj,
- (struct attribute*) sysfs_attrib);
+ &sysfs_attrib->attr);
if (err)
goto err_out;
@@ -762,8 +761,7 @@ static void edac_device_remove_main_sysfs_attributes(
sysfs_attrib = edac_dev->sysfs_attributes;
if (sysfs_attrib) {
while (sysfs_attrib->attr.name != NULL) {
- sysfs_remove_file(&edac_dev->kobj,
- (struct attribute *) sysfs_attrib);
+ sysfs_remove_file(&edac_dev->kobj, &sysfs_attrib->attr);
sysfs_attrib++;
}
}
--
2.53.0