xilinx_hwicap: make icap_class a static const structure
authorIvan Orlov <ivan.orlov0322@gmail.com>
Tue, 20 Jun 2023 14:37:59 +0000 (16:37 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 23 Jun 2023 08:27:23 +0000 (10:27 +0200)
Now that the driver core allows for struct class to be in read-only
memory, move the icap_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: Arnd Bergmann <arnd@arndb.de>
Cc: Michal Simek <michal.simek@amd.com>
Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Cc: Ivan Orlov <ivan.orlov0322@gmail.com>
Cc: linux-arm-kernel@lists.infradead.org
Suggested-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Ivan Orlov <ivan.orlov0322@gmail.com>
Link: https://lore.kernel.org/r/20230620143751.578239-17-gregkh@linuxfoundation.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/char/xilinx_hwicap/xilinx_hwicap.c

index 00e5cf4..f60bb61 100644 (file)
@@ -113,7 +113,9 @@ static DEFINE_MUTEX(hwicap_mutex);
 static bool probed_devices[HWICAP_DEVICES];
 static struct mutex icap_sem;
 
-static struct class *icap_class;
+static const struct class icap_class = {
+       .name = "xilinx_config",
+};
 
 #define UNIMPLEMENTED 0xFFFF
 
@@ -687,7 +689,7 @@ static int hwicap_setup(struct device *dev, int id,
                goto failed3;
        }
 
-       device_create(icap_class, dev, devt, NULL, "%s%d", DRIVER_NAME, id);
+       device_create(&icap_class, dev, devt, NULL, "%s%d", DRIVER_NAME, id);
        return 0;               /* success */
 
  failed3:
@@ -811,7 +813,7 @@ static void hwicap_drv_remove(struct platform_device *pdev)
 
        drvdata = dev_get_drvdata(dev);
 
-       device_destroy(icap_class, drvdata->devt);
+       device_destroy(&icap_class, drvdata->devt);
        cdev_del(&drvdata->cdev);
        iounmap(drvdata->base_address);
        release_mem_region(drvdata->mem_start, drvdata->mem_size);
@@ -848,7 +850,9 @@ static int __init hwicap_module_init(void)
        dev_t devt;
        int retval;
 
-       icap_class = class_create("xilinx_config");
+       retval = class_register(&icap_class);
+       if (retval)
+               return retval;
        mutex_init(&icap_sem);
 
        devt = MKDEV(XHWICAP_MAJOR, XHWICAP_MINOR);
@@ -874,7 +878,7 @@ static void __exit hwicap_module_cleanup(void)
 {
        dev_t devt = MKDEV(XHWICAP_MAJOR, XHWICAP_MINOR);
 
-       class_destroy(icap_class);
+       class_unregister(&icap_class);
 
        platform_driver_unregister(&hwicap_platform_driver);