mips: sibyte: make tb_class constant
authorRicardo B. Marliere <ricardo@marliere.net>
Tue, 5 Mar 2024 13:37:51 +0000 (10:37 -0300)
committerThomas Bogendoerfer <tsbogend@alpha.franken.de>
Thu, 7 Mar 2024 16:19:08 +0000 (17:19 +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 tb_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>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
arch/mips/sibyte/common/sb_tbprof.c

index 408db45efdc8a4dd840b62753f6e1457c687c18c..af5333986900812904116e34da3ceadef4b17eec 100644 (file)
@@ -535,13 +535,14 @@ static const struct file_operations sbprof_tb_fops = {
        .llseek         = default_llseek,
 };
 
-static struct class *tb_class;
+static const struct class tb_class = {
+       .name = "sb_tracebuffer",
+};
 static struct device *tb_dev;
 
 static int __init sbprof_tb_init(void)
 {
        struct device *dev;
-       struct class *tbc;
        int err;
 
        if (register_chrdev(SBPROF_TB_MAJOR, DEVNAME, &sbprof_tb_fops)) {
@@ -550,15 +551,11 @@ static int __init sbprof_tb_init(void)
                return -EIO;
        }
 
-       tbc = class_create("sb_tracebuffer");
-       if (IS_ERR(tbc)) {
-               err = PTR_ERR(tbc);
+       err = class_register(&tb_class);
+       if (err)
                goto out_chrdev;
-       }
-
-       tb_class = tbc;
 
-       dev = device_create(tbc, NULL, MKDEV(SBPROF_TB_MAJOR, 0), NULL, "tb");
+       dev = device_create(&tb_class, NULL, MKDEV(SBPROF_TB_MAJOR, 0), NULL, "tb");
        if (IS_ERR(dev)) {
                err = PTR_ERR(dev);
                goto out_class;
@@ -573,7 +570,7 @@ static int __init sbprof_tb_init(void)
        return 0;
 
 out_class:
-       class_destroy(tb_class);
+       class_unregister(&tb_class);
 out_chrdev:
        unregister_chrdev(SBPROF_TB_MAJOR, DEVNAME);
 
@@ -582,9 +579,9 @@ out_chrdev:
 
 static void __exit sbprof_tb_cleanup(void)
 {
-       device_destroy(tb_class, MKDEV(SBPROF_TB_MAJOR, 0));
+       device_destroy(&tb_class, MKDEV(SBPROF_TB_MAJOR, 0));
        unregister_chrdev(SBPROF_TB_MAJOR, DEVNAME);
-       class_destroy(tb_class);
+       class_unregister(&tb_class);
 }
 
 module_init(sbprof_tb_init);