dsp56k: make dsp56k_class a static const structure
authorIvan Orlov <ivan.orlov0322@gmail.com>
Tue, 20 Jun 2023 14:37:53 +0000 (16:37 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 23 Jun 2023 08:27:08 +0000 (10:27 +0200)
Now that the driver core allows for struct class to be in read-only
memory, move the dsp56k_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: Arnd Bergmann <arnd@arndb.de>
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-11-gregkh@linuxfoundation.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/char/dsp56k.c

index b3eaf3e5ef2e291573a40fc61bf49c77716960a0..bda27e595da122696cdc7795099568ec81257472 100644 (file)
@@ -101,7 +101,9 @@ static struct dsp56k_device {
        int tx_wsize, rx_wsize;
 } dsp56k;
 
-static struct class *dsp56k_class;
+static const struct class dsp56k_class = {
+       .name = "dsp56k",
+};
 
 static int dsp56k_reset(void)
 {
@@ -493,7 +495,7 @@ static const char banner[] __initconst = KERN_INFO "DSP56k driver installed\n";
 
 static int __init dsp56k_init_driver(void)
 {
-       int err = 0;
+       int err;
 
        if(!MACH_IS_ATARI || !ATARIHW_PRESENT(DSP56K)) {
                printk("DSP56k driver: Hardware not present\n");
@@ -504,12 +506,10 @@ static int __init dsp56k_init_driver(void)
                printk("DSP56k driver: Unable to register driver\n");
                return -ENODEV;
        }
-       dsp56k_class = class_create("dsp56k");
-       if (IS_ERR(dsp56k_class)) {
-               err = PTR_ERR(dsp56k_class);
+       err = class_register(&dsp56k_class);
+       if (err)
                goto out_chrdev;
-       }
-       device_create(dsp56k_class, NULL, MKDEV(DSP56K_MAJOR, 0), NULL,
+       device_create(&dsp56k_class, NULL, MKDEV(DSP56K_MAJOR, 0), NULL,
                      "dsp56k");
 
        printk(banner);
@@ -524,8 +524,8 @@ module_init(dsp56k_init_driver);
 
 static void __exit dsp56k_cleanup_driver(void)
 {
-       device_destroy(dsp56k_class, MKDEV(DSP56K_MAJOR, 0));
-       class_destroy(dsp56k_class);
+       device_destroy(&dsp56k_class, MKDEV(DSP56K_MAJOR, 0));
+       class_unregister(&dsp56k_class);
        unregister_chrdev(DSP56K_MAJOR, "dsp56k");
 }
 module_exit(dsp56k_cleanup_driver);