net: ppp: make ppp_class constant
authorRicardo B. Marliere <ricardo@marliere.net>
Sat, 2 Mar 2024 17:05:59 +0000 (14:05 -0300)
committerJakub Kicinski <kuba@kernel.org>
Tue, 5 Mar 2024 19:21:18 +0000 (11:21 -0800)
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 ppp_class structure to be declared at build time
placing it into read-only memory, instead of having to be dynamically
allocated at boot time.

Suggested-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Ricardo B. Marliere <ricardo@marliere.net>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://lore.kernel.org/r/20240302-class_cleanup-net-next-v1-3-8fa378595b93@marliere.net
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ppp/ppp_generic.c

index db1d11a..fe380fe 100644 (file)
@@ -295,7 +295,9 @@ static void ppp_setup(struct net_device *dev);
 
 static const struct net_device_ops ppp_netdev_ops;
 
-static struct class *ppp_class;
+static const struct class ppp_class = {
+       .name = "ppp",
+};
 
 /* per net-namespace data */
 static inline struct ppp_net *ppp_pernet(struct net *net)
@@ -1394,11 +1396,9 @@ static int __init ppp_init(void)
                goto out_net;
        }
 
-       ppp_class = class_create("ppp");
-       if (IS_ERR(ppp_class)) {
-               err = PTR_ERR(ppp_class);
+       err = class_register(&ppp_class);
+       if (err)
                goto out_chrdev;
-       }
 
        err = rtnl_link_register(&ppp_link_ops);
        if (err) {
@@ -1407,12 +1407,12 @@ static int __init ppp_init(void)
        }
 
        /* not a big deal if we fail here :-) */
-       device_create(ppp_class, NULL, MKDEV(PPP_MAJOR, 0), NULL, "ppp");
+       device_create(&ppp_class, NULL, MKDEV(PPP_MAJOR, 0), NULL, "ppp");
 
        return 0;
 
 out_class:
-       class_destroy(ppp_class);
+       class_unregister(&ppp_class);
 out_chrdev:
        unregister_chrdev(PPP_MAJOR, "ppp");
 out_net:
@@ -3549,8 +3549,8 @@ static void __exit ppp_cleanup(void)
                pr_err("PPP: removing module but units remain!\n");
        rtnl_link_unregister(&ppp_link_ops);
        unregister_chrdev(PPP_MAJOR, "ppp");
-       device_destroy(ppp_class, MKDEV(PPP_MAJOR, 0));
-       class_destroy(ppp_class);
+       device_destroy(&ppp_class, MKDEV(PPP_MAJOR, 0));
+       class_unregister(&ppp_class);
        unregister_pernet_device(&ppp_net_ops);
 }