]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
EDAC/device: Drop unnecessary and dangerous casts of attributes
authorThomas Weißschuh <linux@weissschuh.net>
Mon, 23 Feb 2026 21:16:30 +0000 (22:16 +0100)
committerBorislav Petkov (AMD) <bp@alien8.de>
Wed, 11 Mar 2026 21:20:11 +0000 (22:20 +0100)
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@weissschuh.net>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Link: https://patch.msgid.link/20260223-sysfs-const-edac-v1-3-3ff0b87249e7@weissschuh.net
drivers/edac/edac_device_sysfs.c

index 9cc466b78982ef6f50a6c29b967933d104839dc9..1e79f36a91fafd7c57feee947d100359c51cc752 100644 (file)
@@ -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++;
                }
        }