misc: hpilo: make ilo_class a static const structure
authorIvan Orlov <ivan.orlov0322@gmail.com>
Thu, 10 Aug 2023 19:42:39 +0000 (23:42 +0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 11 Aug 2023 19:41:36 +0000 (21:41 +0200)
Now that the driver core allows for struct class to be in read-only
memory, move the ilo_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/20230810194239.26892-1-ivan.orlov0322@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/misc/hpilo.c

index 2fde8d6..f1b74d3 100644 (file)
@@ -25,7 +25,9 @@
 #include <linux/slab.h>
 #include "hpilo.h"
 
-static struct class *ilo_class;
+static const struct class ilo_class = {
+       .name = "iLO",
+};
 static unsigned int ilo_major;
 static unsigned int max_ccb = 16;
 static char ilo_hwdev[MAX_ILO_DEV];
@@ -746,7 +748,7 @@ static void ilo_remove(struct pci_dev *pdev)
 
        minor = MINOR(ilo_hw->cdev.dev);
        for (i = minor; i < minor + max_ccb; i++)
-               device_destroy(ilo_class, MKDEV(ilo_major, i));
+               device_destroy(&ilo_class, MKDEV(ilo_major, i));
 
        cdev_del(&ilo_hw->cdev);
        ilo_disable_interrupts(ilo_hw);
@@ -839,7 +841,7 @@ static int ilo_probe(struct pci_dev *pdev,
 
        for (minor = 0 ; minor < max_ccb; minor++) {
                struct device *dev;
-               dev = device_create(ilo_class, &pdev->dev,
+               dev = device_create(&ilo_class, &pdev->dev,
                                    MKDEV(ilo_major, minor), NULL,
                                    "hpilo!d%dccb%d", devnum, minor);
                if (IS_ERR(dev))
@@ -882,11 +884,9 @@ static int __init ilo_init(void)
        int error;
        dev_t dev;
 
-       ilo_class = class_create("iLO");
-       if (IS_ERR(ilo_class)) {
-               error = PTR_ERR(ilo_class);
+       error = class_register(&ilo_class);
+       if (error)
                goto out;
-       }
 
        error = alloc_chrdev_region(&dev, 0, MAX_OPEN, ILO_NAME);
        if (error)
@@ -902,7 +902,7 @@ static int __init ilo_init(void)
 chr_remove:
        unregister_chrdev_region(dev, MAX_OPEN);
 class_destroy:
-       class_destroy(ilo_class);
+       class_unregister(&ilo_class);
 out:
        return error;
 }
@@ -911,7 +911,7 @@ static void __exit ilo_exit(void)
 {
        pci_unregister_driver(&ilo_driver);
        unregister_chrdev_region(MKDEV(ilo_major, 0), MAX_OPEN);
-       class_destroy(ilo_class);
+       class_unregister(&ilo_class);
 }
 
 MODULE_VERSION("1.5.0");