diff options
author | Borislav Petkov <bp@suse.de> | 2022-03-08 16:16:17 +0300 |
---|---|---|
committer | Borislav Petkov <bp@suse.de> | 2022-04-11 12:43:26 +0300 |
commit | 9fb9ce392aae0c6654efc42c80e2f6bab88d5fe3 (patch) | |
tree | 936ad0f870760d221b85e65aadff185ab3312a32 /drivers/edac/edac_device.h | |
parent | fb8cd45ca39bdb216e358e36063d8b9962242107 (diff) | |
download | linux-9fb9ce392aae0c6654efc42c80e2f6bab88d5fe3.tar.xz |
EDAC/device: Get rid of the silly one-shot memory allocation in edac_device_alloc_ctl_info()
Use boring kzalloc() instead. Add pointers to the different allocated
members in struct edac_device_ctl_info for easier freeing later.
One of the reasons, perhaps, why it was done this way is to be able to
do a single kfree(ctl_info) without having to kfree() the other parts of
the struct too but that is not nearly a sensible reason as to why there
should be this obscure pointer alignment.
There should be no functional changes resulting from this.
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lore.kernel.org/r/20220310095254.1510-4-bp@alien8.de
Diffstat (limited to 'drivers/edac/edac_device.h')
-rw-r--r-- | drivers/edac/edac_device.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/edac/edac_device.h b/drivers/edac/edac_device.h index fc2d2c218064..3f44e6b9d387 100644 --- a/drivers/edac/edac_device.h +++ b/drivers/edac/edac_device.h @@ -216,6 +216,8 @@ struct edac_device_ctl_info { */ u32 nr_instances; struct edac_device_instance *instances; + struct edac_device_block *blocks; + struct edac_dev_sysfs_block_attribute *attribs; /* Event counters for the this whole EDAC Device */ struct edac_device_counter counters; @@ -348,4 +350,16 @@ edac_device_handle_ue(struct edac_device_ctl_info *edac_dev, int inst_nr, */ extern int edac_device_alloc_index(void); extern const char *edac_layer_name[]; + +/* Free the actual struct */ +static inline void __edac_device_free_ctl_info(struct edac_device_ctl_info *ci) +{ + if (ci) { + kfree(ci->pvt_info); + kfree(ci->attribs); + kfree(ci->blocks); + kfree(ci->instances); + kfree(ci); + } +} #endif |