ALSA: ac97: fix possible memory leak in snd_ac97_dev_register()
authorYang Yingliang <yangyingliang@huawei.com>
Wed, 19 Oct 2022 09:30:25 +0000 (17:30 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 3 Nov 2022 14:57:51 +0000 (23:57 +0900)
[ Upstream commit 4881bda5ea05c8c240fc8afeaa928e2bc43f61fa ]

If device_register() fails in snd_ac97_dev_register(), it should
call put_device() to give up reference, or the name allocated in
dev_set_name() is leaked.

Fixes: 0ca06a00e206 ("[ALSA] AC97 bus interface for ad-hoc drivers")
Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Link: https://lore.kernel.org/r/20221019093025.1179475-1-yangyingliang@huawei.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
sound/pci/ac97/ac97_codec.c

index 963731cf0d8c880f6c5ba5c9235dad01ca040ac5..cd66632bf1c37000b3a208f2cd541e1e4503c0f4 100644 (file)
@@ -1946,6 +1946,7 @@ static int snd_ac97_dev_register(struct snd_device *device)
                     snd_ac97_get_short_name(ac97));
        if ((err = device_register(&ac97->dev)) < 0) {
                ac97_err(ac97, "Can't register ac97 bus\n");
+               put_device(&ac97->dev);
                ac97->dev.bus = NULL;
                return err;
        }