char: xillybus: make xillybus_class a static const structure
authorIvan Orlov <ivan.orlov0322@gmail.com>
Tue, 20 Jun 2023 14:38:00 +0000 (16:38 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 23 Jun 2023 08:27:26 +0000 (10:27 +0200)
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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Ivan Orlov <ivan.orlov0322@gmail.com>
Acked-by: Eli Billauer <eli.billauer@gmail.com>
Link: https://lore.kernel.org/r/20230620143751.578239-18-gregkh@linuxfoundation.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/char/xillybus/xillybus_class.c

index 89926fe9d8130b8f88ff01de55c03f6662c0b454..c92a628e389eefd1bb221b716f201d323d57bd52 100644 (file)
@@ -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);