Commit e5d9592c authored by Ricardo B. Marliere's avatar Ricardo B. Marliere Committed by Thomas Bogendoerfer
Browse files

mips: mt: make mt_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 mt_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: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarRicardo B. Marliere <ricardo@marliere.net>
Signed-off-by: default avatarThomas Bogendoerfer <tsbogend@alpha.franken.de>
parent 5804be06
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -26,6 +26,6 @@ static inline void mips_mt_set_cpuoptions(void) { }
#endif

struct class;
extern struct class *mt_class;
extern const struct class mt_class;

#endif /* __ASM_MIPS_MT_H */
+4 −10
Original line number Diff line number Diff line
@@ -229,19 +229,13 @@ void mips_mt_set_cpuoptions(void)
	}
}

struct class *mt_class;
const struct class mt_class = {
	.name = "mt",
};

static int __init mips_mt_init(void)
{
	struct class *mtc;

	mtc = class_create("mt");
	if (IS_ERR(mtc))
		return PTR_ERR(mtc);

	mt_class = mtc;

	return 0;
	return class_register(&mt_class);
}

subsys_initcall(mips_mt_init);
+4 −4
Original line number Diff line number Diff line
@@ -95,11 +95,11 @@ int __init rtlx_module_init(void)
		atomic_set(&channel_wqs[i].in_open, 0);
		mutex_init(&channel_wqs[i].mutex);

		dev = device_create(mt_class, NULL, MKDEV(major, i), NULL,
		dev = device_create(&mt_class, NULL, MKDEV(major, i), NULL,
				    "%s%d", RTLX_MODULE_NAME, i);
		if (IS_ERR(dev)) {
			while (i--)
				device_destroy(mt_class, MKDEV(major, i));
				device_destroy(&mt_class, MKDEV(major, i));

			err = PTR_ERR(dev);
			goto out_chrdev;
@@ -127,7 +127,7 @@ int __init rtlx_module_init(void)

out_class:
	for (i = 0; i < RTLX_CHANNELS; i++)
		device_destroy(mt_class, MKDEV(major, i));
		device_destroy(&mt_class, MKDEV(major, i));
out_chrdev:
	unregister_chrdev(major, RTLX_MODULE_NAME);

@@ -139,7 +139,7 @@ void __exit rtlx_module_exit(void)
	int i;

	for (i = 0; i < RTLX_CHANNELS; i++)
		device_destroy(mt_class, MKDEV(major, i));
		device_destroy(&mt_class, MKDEV(major, i));

	unregister_chrdev(major, RTLX_MODULE_NAME);