Commit 495e77a5 authored by Thomas Weißschuh's avatar Thomas Weißschuh Committed by Borislav Petkov (AMD)
Browse files

EDAC/device: Drop unnecessary and dangerous casts of attributes



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: default avatarThomas Weißschuh <linux@weissschuh.net>
Signed-off-by: default avatarBorislav Petkov (AMD) <bp@alien8.de>
Link: https://patch.msgid.link/20260223-sysfs-const-edac-v1-3-3ff0b87249e7@weissschuh.net
parent c43c3b8f
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -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++;
		}
	}