On Thu, 24 Aug 2023 23:02:52 +0200, cujomalainey@chromium.org wrote:
From: Curtis Malainey cujomalainey@chromium.org
Begin allowing refactored modules to allocate their own device but use a common initialization procedure for their devices.
Signed-off-by: Curtis Malainey cujomalainey@chromium.org
include/sound/core.h | 1 + sound/core/init.c | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/include/sound/core.h b/include/sound/core.h index dfef0c9d4b9f7..a4744e142c7e3 100644 --- a/include/sound/core.h +++ b/include/sound/core.h @@ -240,6 +240,7 @@ extern struct dentry *sound_debugfs_root; void snd_request_card(int card);
int snd_device_alloc(struct device **dev_p, struct snd_card *card); +void snd_device_init(struct device *dev, struct snd_card *card);
int snd_register_device(int type, struct snd_card *card, int dev, const struct file_operations *f_ops, diff --git a/sound/core/init.c b/sound/core/init.c index d61bde1225f23..37a8e4791f781 100644 --- a/sound/core/init.c +++ b/sound/core/init.c @@ -132,15 +132,28 @@ int snd_device_alloc(struct device **dev_p, struct snd_card *card) dev = kzalloc(sizeof(*dev), GFP_KERNEL); if (!dev) return -ENOMEM;
- snd_device_init(dev, card);
- *dev_p = dev;
- return 0;
+} +EXPORT_SYMBOL_GPL(snd_device_alloc);
+/**
- snd_device_init - Initialize struct device for sound devices
- @dev_p: pointer to store the allocated device
- @card: card to assign, optional
- For releasing the allocated device, call put_device().
- */
+void snd_device_init(struct device *dev, struct snd_card *card) +{ device_initialize(dev); if (card) dev->parent = &card->card_dev; dev->class = &sound_class; dev->release = default_release_alloc;
- *dev_p = dev;
- return 0;
} -EXPORT_SYMBOL_GPL(snd_device_alloc); +EXPORT_SYMBOL_GPL(snd_device_init);
This will call kfree() at the default release. It should be avoided for this case, no?
Also, it's worth that this practically a kind of revive of the old API that was dropped in the commit 01ed7f3535a2.
thanks,
Takashi