s390/vmlogrdr: make vmlogrdr_class constant
authorRicardo B. Marliere <ricardo@marliere.net>
Tue, 5 Mar 2024 11:25:21 +0000 (08:25 -0300)
committerHeiko Carstens <hca@linux.ibm.com>
Wed, 13 Mar 2024 08:23:49 +0000 (09:23 +0100)
Since commit 43a7206b0963 ("driver core: class: make class_register() take
a const *"), the driver core allows for struct class to be in read-only
memory, so move the vmlogrdr_class structure to be declared at build time
placing it into read-only memory, instead of having to be dynamically
allocated at boot time.

Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Suggested-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: "Ricardo B. Marliere" <ricardo@marliere.net>
Link: https://lore.kernel.org/r/20240305-class_cleanup-s390-v1-3-c4ff1ec49ffd@marliere.net
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
drivers/s390/char/vmlogrdr.c

index 6946ba9a9de2c592f3e4172e76407f0b2ec95e48..d7e408c8d0b84a067383ab697ebf4305013679a8 100644 (file)
@@ -679,7 +679,9 @@ static const struct attribute_group *vmlogrdr_attr_groups[] = {
        NULL,
 };
 
-static struct class *vmlogrdr_class;
+static const struct class vmlogrdr_class = {
+       .name = "vmlogrdr_class",
+};
 static struct device_driver vmlogrdr_driver = {
        .name = "vmlogrdr",
        .bus  = &iucv_bus,
@@ -699,12 +701,9 @@ static int vmlogrdr_register_driver(void)
        if (ret)
                goto out_iucv;
 
-       vmlogrdr_class = class_create("vmlogrdr");
-       if (IS_ERR(vmlogrdr_class)) {
-               ret = PTR_ERR(vmlogrdr_class);
-               vmlogrdr_class = NULL;
+       ret = class_register(&vmlogrdr_class);
+       if (ret)
                goto out_driver;
-       }
        return 0;
 
 out_driver:
@@ -718,8 +717,7 @@ out:
 
 static void vmlogrdr_unregister_driver(void)
 {
-       class_destroy(vmlogrdr_class);
-       vmlogrdr_class = NULL;
+       class_unregister(&vmlogrdr_class);
        driver_unregister(&vmlogrdr_driver);
        iucv_unregister(&vmlogrdr_iucv_handler, 1);
 }
@@ -754,7 +752,7 @@ static int vmlogrdr_register_device(struct vmlogrdr_priv_t *priv)
                return ret;
        }
 
-       priv->class_device = device_create(vmlogrdr_class, dev,
+       priv->class_device = device_create(&vmlogrdr_class, dev,
                                           MKDEV(vmlogrdr_major,
                                                 priv->minor_num),
                                           priv, "%s", dev_name(dev));
@@ -771,7 +769,7 @@ static int vmlogrdr_register_device(struct vmlogrdr_priv_t *priv)
 
 static int vmlogrdr_unregister_device(struct vmlogrdr_priv_t *priv)
 {
-       device_destroy(vmlogrdr_class, MKDEV(vmlogrdr_major, priv->minor_num));
+       device_destroy(&vmlogrdr_class, MKDEV(vmlogrdr_major, priv->minor_num));
        if (priv->device != NULL) {
                device_unregister(priv->device);
                priv->device=NULL;