Skip to content

Commit

Permalink
ALSA: ac97: fix device initialization in the compat layer
Browse files Browse the repository at this point in the history
ac97->dev is an object of 'struct device' type. It should be initialized
via device_initialize() or device_register().

Fixes: 74426fb ("ALSA: ac97: add an ac97 bus")
Signed-off-by: Lihua Yao <[email protected]>
Tested-by: Robert Jarzmik <[email protected]>
Acked-by: Robert Jarzmik <[email protected]>
Cc: <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
  • Loading branch information
Lihua Yao authored and tiwai committed Aug 19, 2018
1 parent 82fd4b0 commit c7b8170
Showing 1 changed file with 17 additions and 2 deletions.
19 changes: 17 additions & 2 deletions sound/ac97/snd_ac97_compat.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@

#include "ac97_core.h"

static void compat_ac97_release(struct device *dev)
{
kfree(to_ac97_t(dev));
}

static void compat_ac97_reset(struct snd_ac97 *ac97)
{
struct ac97_codec_device *adev = to_ac97_device(ac97->private_data);
Expand Down Expand Up @@ -65,21 +70,31 @@ static struct snd_ac97_bus compat_soc_ac97_bus = {
struct snd_ac97 *snd_ac97_compat_alloc(struct ac97_codec_device *adev)
{
struct snd_ac97 *ac97;
int ret;

ac97 = kzalloc(sizeof(struct snd_ac97), GFP_KERNEL);
if (ac97 == NULL)
return ERR_PTR(-ENOMEM);

ac97->dev = adev->dev;
ac97->private_data = adev;
ac97->bus = &compat_soc_ac97_bus;

ac97->dev.parent = &adev->dev;
ac97->dev.release = compat_ac97_release;
dev_set_name(&ac97->dev, "%s-compat", dev_name(&adev->dev));
ret = device_register(&ac97->dev);
if (ret) {
put_device(&ac97->dev);
return ERR_PTR(ret);
}

return ac97;
}
EXPORT_SYMBOL_GPL(snd_ac97_compat_alloc);

void snd_ac97_compat_release(struct snd_ac97 *ac97)
{
kfree(ac97);
device_unregister(&ac97->dev);
}
EXPORT_SYMBOL_GPL(snd_ac97_compat_release);

Expand Down

0 comments on commit c7b8170

Please sign in to comment.