Commit 2ad2018a authored by Ricardo B. Marliere's avatar Ricardo B. Marliere Committed by Jakub Kicinski
Browse files

net: ppp: make ppp_class constant



Since commit 43a7206b ("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: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarRicardo B. Marliere <ricardo@marliere.net>
Reviewed-by: default avatarSimon Horman <horms@kernel.org>
Link: https://lore.kernel.org/r/20240302-class_cleanup-net-next-v1-3-8fa378595b93@marliere.net


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 63767a76
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -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);
}