Commit 8d0cf150 authored by Ivan Orlov's avatar Ivan Orlov Committed by Takashi Iwai
Browse files

sound: make all 'class' structures const



Now that the driver core allows for struct class to be in read-only
memory, making all 'class' structures to be declared at build time
placing them into read-only memory, instead of having to be dynamically
allocated at load time.

Cc: Jaroslav Kysela <perex@perex.cz>
Cc: Takashi Iwai <tiwai@suse.com>
Cc: Ivan Orlov <ivan.orlov0322@gmail.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Geoff Levand <geoff@infradead.org>
Cc: Thierry Reding <treding@nvidia.com>
Cc: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
Cc: alsa-devel@alsa-project.org
Suggested-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarIvan Orlov <ivan.orlov0322@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://lore.kernel.org/r/20230620175633.641141-2-gregkh@linuxfoundation.org


Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 7ea9ee00
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -232,7 +232,7 @@ static inline struct device *snd_card_get_device_link(struct snd_card *card)

extern int snd_major;
extern int snd_ecards_limit;
extern struct class *sound_class;
extern const struct class sound_class;
#ifdef CONFIG_SND_DEBUG
extern struct dentry *sound_debugfs_root;
#endif
+1 −1
Original line number Diff line number Diff line
@@ -737,7 +737,7 @@ static int __init snd_ctl_led_init(void)
	unsigned int group;

	device_initialize(&snd_ctl_led_dev);
	snd_ctl_led_dev.class = sound_class;
	snd_ctl_led_dev.class = &sound_class;
	snd_ctl_led_dev.release = snd_ctl_led_dev_release;
	dev_set_name(&snd_ctl_led_dev, "ctl-led");
	if (device_add(&snd_ctl_led_dev)) {
+2 −2
Original line number Diff line number Diff line
@@ -129,7 +129,7 @@ void snd_device_initialize(struct device *dev, struct snd_card *card)
	device_initialize(dev);
	if (card)
		dev->parent = &card->card_dev;
	dev->class = sound_class;
	dev->class = &sound_class;
	dev->release = default_release;
}
EXPORT_SYMBOL_GPL(snd_device_initialize);
@@ -331,7 +331,7 @@ static int snd_card_init(struct snd_card *card, struct device *parent,

	device_initialize(&card->card_dev);
	card->card_dev.parent = parent;
	card->card_dev.class = sound_class;
	card->card_dev.class = &sound_class;
	card->card_dev.release = release_card_device;
	card->card_dev.groups = card->dev_groups;
	card->dev_groups[0] = &card_dev_attr_group;
+12 −11
Original line number Diff line number Diff line
@@ -23,9 +23,6 @@ static inline int init_oss_soundcore(void) { return 0; }
static inline void cleanup_oss_soundcore(void)	{ }
#endif

struct class *sound_class;
EXPORT_SYMBOL(sound_class);

MODULE_DESCRIPTION("Core sound module");
MODULE_AUTHOR("Alan Cox");
MODULE_LICENSE("GPL");
@@ -37,6 +34,12 @@ static char *sound_devnode(const struct device *dev, umode_t *mode)
	return kasprintf(GFP_KERNEL, "snd/%s", dev_name(dev));
}

const struct class sound_class = {
	.name = "sound",
	.devnode = sound_devnode,
};
EXPORT_SYMBOL(sound_class);

static int __init init_soundcore(void)
{
	int rc;
@@ -45,21 +48,19 @@ static int __init init_soundcore(void)
	if (rc)
		return rc;

	sound_class = class_create("sound");
	if (IS_ERR(sound_class)) {
	rc = class_register(&sound_class);
	if (rc) {
		cleanup_oss_soundcore();
		return PTR_ERR(sound_class);
		return rc;
	}

	sound_class->devnode = sound_devnode;

	return 0;
}

static void __exit cleanup_soundcore(void)
{
	cleanup_oss_soundcore();
	class_destroy(sound_class);
	class_unregister(&sound_class);
}

subsys_initcall(init_soundcore);
@@ -276,7 +277,7 @@ static int sound_insert_unit(struct sound_unit **list, const struct file_operati
		}
	}

	device_create(sound_class, dev, MKDEV(SOUND_MAJOR, s->unit_minor),
	device_create(&sound_class, dev, MKDEV(SOUND_MAJOR, s->unit_minor),
		      NULL, "%s", s->name+6);
	return s->unit_minor;

@@ -302,7 +303,7 @@ static void sound_remove_unit(struct sound_unit **list, int unit)
		if (!preclaim_oss)
			__unregister_chrdev(SOUND_MAJOR, p->unit_minor, 1,
					    p->name);
		device_destroy(sound_class, MKDEV(SOUND_MAJOR, p->unit_minor));
		device_destroy(&sound_class, MKDEV(SOUND_MAJOR, p->unit_minor));
		kfree(p);
	}
}