[PATCH 8/9] xilinx_hwicap: make icap_class a static const structure

From: Greg Kroah-Hartman
Date: Tue Jun 20 2023 - 10:38:46 EST


From: Ivan Orlov <ivan.orlov0322@xxxxxxxxx>

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@xxxxxxxx>
Cc: Michal Simek <michal.simek@xxxxxxx>
Cc: Benjamin Tissoires <benjamin.tissoires@xxxxxxxxxx>
Cc: Ivan Orlov <ivan.orlov0322@xxxxxxxxx>
Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
Suggested-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
Signed-off-by: Ivan Orlov <ivan.orlov0322@xxxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
---
drivers/char/xilinx_hwicap/xilinx_hwicap.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/drivers/char/xilinx_hwicap/xilinx_hwicap.c b/drivers/char/xilinx_hwicap/xilinx_hwicap.c
index a46f637da959..527153313a30 100644
--- a/drivers/char/xilinx_hwicap/xilinx_hwicap.c
+++ b/drivers/char/xilinx_hwicap/xilinx_hwicap.c
@@ -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:
@@ -730,7 +732,7 @@ static int hwicap_remove(struct device *dev)
if (!drvdata)
return 0;

- 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);
@@ -856,7 +858,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);
@@ -882,7 +886,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);

--
2.41.0