mei: make mei_class a static const structure
Now that the driver core allows for struct class to be in read-only memory, move the mei_class structure to be declared at build time placing it into read-only memory, instead of having to be dynamically allocated at boot time. Suggested-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Ivan Orlov <ivan.orlov0322@gmail.com> Link: https://lore.kernel.org/r/20230811213052.85044-1-ivan.orlov0322@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
979ca1ca1f
commit
df8e2c3e16
@ -27,7 +27,10 @@
|
||||
#include "mei_dev.h"
|
||||
#include "client.h"
|
||||
|
||||
static struct class *mei_class;
|
||||
static const struct class mei_class = {
|
||||
.name = "mei",
|
||||
};
|
||||
|
||||
static dev_t mei_devt;
|
||||
#define MEI_MAX_DEVS MINORMASK
|
||||
static DEFINE_MUTEX(mei_minor_lock);
|
||||
@ -1115,7 +1118,7 @@ void mei_set_devstate(struct mei_device *dev, enum mei_dev_state state)
|
||||
|
||||
dev->dev_state = state;
|
||||
|
||||
clsdev = class_find_device_by_devt(mei_class, dev->cdev.dev);
|
||||
clsdev = class_find_device_by_devt(&mei_class, dev->cdev.dev);
|
||||
if (clsdev) {
|
||||
sysfs_notify(&clsdev->kobj, NULL, "dev_state");
|
||||
put_device(clsdev);
|
||||
@ -1232,7 +1235,7 @@ int mei_register(struct mei_device *dev, struct device *parent)
|
||||
goto err_dev_add;
|
||||
}
|
||||
|
||||
clsdev = device_create_with_groups(mei_class, parent, devno,
|
||||
clsdev = device_create_with_groups(&mei_class, parent, devno,
|
||||
dev, mei_groups,
|
||||
"mei%d", dev->minor);
|
||||
|
||||
@ -1264,7 +1267,7 @@ void mei_deregister(struct mei_device *dev)
|
||||
|
||||
mei_dbgfs_deregister(dev);
|
||||
|
||||
device_destroy(mei_class, devno);
|
||||
device_destroy(&mei_class, devno);
|
||||
|
||||
mei_minor_free(dev);
|
||||
}
|
||||
@ -1274,12 +1277,9 @@ static int __init mei_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
mei_class = class_create("mei");
|
||||
if (IS_ERR(mei_class)) {
|
||||
pr_err("couldn't create class\n");
|
||||
ret = PTR_ERR(mei_class);
|
||||
goto err;
|
||||
}
|
||||
ret = class_register(&mei_class);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = alloc_chrdev_region(&mei_devt, 0, MEI_MAX_DEVS, "mei");
|
||||
if (ret < 0) {
|
||||
@ -1298,15 +1298,14 @@ static int __init mei_init(void)
|
||||
err_chrdev:
|
||||
unregister_chrdev_region(mei_devt, MEI_MAX_DEVS);
|
||||
err_class:
|
||||
class_destroy(mei_class);
|
||||
err:
|
||||
class_unregister(&mei_class);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void __exit mei_exit(void)
|
||||
{
|
||||
unregister_chrdev_region(mei_devt, MEI_MAX_DEVS);
|
||||
class_destroy(mei_class);
|
||||
class_unregister(&mei_class);
|
||||
mei_cl_bus_exit();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user