Am 04.01.25 um 00:05 schrieb Thomas Weißschuh:
The header firmware_attributes_class.h uses 'struct class'. It should also include the necessary dependency header.
Hi, i like this patch series, but i would prefer that we do not expose the raw class through the header. Looking at the callers of fw_attributes_class_get(), everywhere the class value is used only to call: device_create(fw_attr_class, NULL, MKDEV(0, 0), NULL, "%s", <driver name>); I suggest that we introduce two new functions for that: struct device *firmware_attributes_device_register(struct device *parent, const char *name); void firmware_attributes_device_unregister(struct device *dev); This would have three major benefits: - the raw class can be made internal - reduced code size - drivers would stop copying the flawed use of device_destroy() Regarding the use of device_destroy(): this is actually an error since device_destroy() cannot be reliably used when devt is not unique. Since all those drivers are setting devt to MKDEV(0, 0) this could result in a kernel panic should multiple firmware-attribute class devices exist at the same time. What do you think? Thanks, Armin Wolf
Signed-off-by: Thomas Weißschuh <linux@xxxxxxxxxxxxxx> --- drivers/platform/x86/firmware_attributes_class.c | 1 - drivers/platform/x86/firmware_attributes_class.h | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/platform/x86/firmware_attributes_class.c b/drivers/platform/x86/firmware_attributes_class.c index 182a07d8ae3dfa8925bb5b71a43d0219c3cf0fa0..cbc56e5db59283ba99ac0b915ac5fb2432afbdc9 100644 --- a/drivers/platform/x86/firmware_attributes_class.c +++ b/drivers/platform/x86/firmware_attributes_class.c @@ -3,7 +3,6 @@ /* Firmware attributes class helper module */ #include <linux/mutex.h> -#include <linux/device/class.h> #include <linux/module.h> #include "firmware_attributes_class.h" diff --git a/drivers/platform/x86/firmware_attributes_class.h b/drivers/platform/x86/firmware_attributes_class.h index 363c75f1ac1b89df879a8689b070e6b11d3bb7fd..8e0f47cfdf92eb4dc8722b7d8371916af0d84efa 100644 --- a/drivers/platform/x86/firmware_attributes_class.h +++ b/drivers/platform/x86/firmware_attributes_class.h @@ -5,6 +5,8 @@ #ifndef FW_ATTR_CLASS_H #define FW_ATTR_CLASS_H +#include <linux/device/class.h> + int fw_attributes_class_get(const struct class **fw_attr_class); int fw_attributes_class_put(void);