Commit df8e2c3e authored by Ivan Orlov's avatar Ivan Orlov Committed by Greg Kroah-Hartman
Browse files

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: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarIvan Orlov <ivan.orlov0322@gmail.com>
Link: https://lore.kernel.org/r/20230811213052.85044-1-ivan.orlov0322@gmail.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 979ca1ca
Loading
Loading
Loading
Loading
+12 −13
Original line number Diff line number Diff line
@@ -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();
}