ALSA: hda: fix potential memleak in 'add_widget_node'

Message ID 20221110144539.2989354-1-yebin@huaweicloud.com
State New
Headers
Series ALSA: hda: fix potential memleak in 'add_widget_node' |

Commit Message

Ye Bin Nov. 10, 2022, 2:45 p.m. UTC
  From: Ye Bin <yebin10@huawei.com>

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>
---
 sound/hda/hdac_sysfs.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
  

Comments

Takashi Iwai Nov. 10, 2022, 2:28 p.m. UTC | #1
On Thu, 10 Nov 2022 15:45:39 +0100,
Ye Bin wrote:
> 
> From: Ye Bin <yebin10@huawei.com>
> 
> 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>

Thanks, applied now.


Takashi
  

Patch

diff --git a/sound/hda/hdac_sysfs.c b/sound/hda/hdac_sysfs.c
index e47de49a32e3..62a9615dcf52 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);