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

char: xillybus: make xillybus_class a static const structure



Now that the driver core allows for struct class to be in read-only
memory, move the xillybus_class structure to be declared at build time
placing it into read-only memory, instead of having to be dynamically
allocated at load time.

Cc: Eli Billauer <eli.billauer@gmail.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Suggested-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarIvan Orlov <ivan.orlov0322@gmail.com>
Acked-by: default avatarEli Billauer <eli.billauer@gmail.com>
Link: https://lore.kernel.org/r/20230620143751.578239-18-gregkh@linuxfoundation.org


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 936cb492
Loading
Loading
Loading
Loading
+8 −13
Original line number Diff line number Diff line
@@ -23,7 +23,9 @@ MODULE_LICENSE("GPL v2");

static DEFINE_MUTEX(unit_mutex);
static LIST_HEAD(unit_list);
static struct class *xillybus_class;
static const struct class xillybus_class = {
	.name = "xillybus",
};

#define UNITNAMELEN 16

@@ -121,7 +123,7 @@ int xillybus_init_chrdev(struct device *dev,
		len -= namelen + 1;
		idt += namelen + 1;

		device = device_create(xillybus_class,
		device = device_create(&xillybus_class,
				       NULL,
				       MKDEV(unit->major,
					     i + unit->lowest_minor),
@@ -152,7 +154,7 @@ int xillybus_init_chrdev(struct device *dev,

unroll_device_create:
	for (i--; i >= 0; i--)
		device_destroy(xillybus_class, MKDEV(unit->major,
		device_destroy(&xillybus_class, MKDEV(unit->major,
						     i + unit->lowest_minor));

	cdev_del(unit->cdev);
@@ -193,7 +195,7 @@ void xillybus_cleanup_chrdev(void *private_data,
	for (minor = unit->lowest_minor;
	     minor < (unit->lowest_minor + unit->num_nodes);
	     minor++)
		device_destroy(xillybus_class, MKDEV(unit->major, minor));
		device_destroy(&xillybus_class, MKDEV(unit->major, minor));

	cdev_del(unit->cdev);

@@ -242,19 +244,12 @@ EXPORT_SYMBOL(xillybus_find_inode);

static int __init xillybus_class_init(void)
{
	xillybus_class = class_create("xillybus");

	if (IS_ERR(xillybus_class)) {
		pr_warn("Failed to register xillybus class\n");

		return PTR_ERR(xillybus_class);
	}
	return 0;
	return class_register(&xillybus_class);
}

static void __exit xillybus_class_exit(void)
{
	class_destroy(xillybus_class);
	class_unregister(&xillybus_class);
}

module_init(xillybus_class_init);