diff options
author | Ye Bin <yebin10@huawei.com> | 2022-11-10 22:45:39 +0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2022-11-16 09:57:15 +0100 |
commit | 3a79f9568de08657fcdbc41d6fc4c0ca145a7a2b (patch) | |
tree | a717dbd2089d34fc9d08c62ee08d0ef1f67584ae /sound/hda | |
parent | 380d64168da41b17dc4faaf5c5e780793566ca09 (diff) | |
download | linux-stable-3a79f9568de08657fcdbc41d6fc4c0ca145a7a2b.tar.gz linux-stable-3a79f9568de08657fcdbc41d6fc4c0ca145a7a2b.tar.bz2 linux-stable-3a79f9568de08657fcdbc41d6fc4c0ca145a7a2b.zip |
ALSA: hda: fix potential memleak in 'add_widget_node'
commit 9a5523f72bd2b0d66eef3d58810c6eb7b5ffc143 upstream.
As 'kobject_add' may allocated memory for 'kobject->name' when return error.
And in this function, if call 'kobject_add' failed didn't free kobject.
So call 'kobject_put' to recycling resources.
Signed-off-by: Ye Bin <yebin10@huawei.com>
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20221110144539.2989354-1-yebin@huaweicloud.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'sound/hda')
-rw-r--r-- | sound/hda/hdac_sysfs.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sound/hda/hdac_sysfs.c b/sound/hda/hdac_sysfs.c index e56e83325903..bcf302f5115a 100644 --- a/sound/hda/hdac_sysfs.c +++ b/sound/hda/hdac_sysfs.c @@ -346,8 +346,10 @@ static int add_widget_node(struct kobject *parent, hda_nid_t nid, return -ENOMEM; kobject_init(kobj, &widget_ktype); err = kobject_add(kobj, parent, "%02x", nid); - if (err < 0) + if (err < 0) { + kobject_put(kobj); return err; + } err = sysfs_create_group(kobj, group); if (err < 0) { kobject_put(kobj); |