On Thu, 24 Aug 2023 23:02:52 +0200, cujomalainey@xxxxxxxxxxxx wrote: > > From: Curtis Malainey <cujomalainey@xxxxxxxxxxxx> > > Begin allowing refactored modules to allocate their own device but use a > common initialization procedure for their devices. > > Signed-off-by: Curtis Malainey <cujomalainey@xxxxxxxxxxxx> > --- > 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