forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-11 1f93a7dfd1f8d5ff7a5c53246c7534fe2332d6f4
kernel/sound/hda/hdac_sysfs.c
....@@ -346,8 +346,10 @@
346346 return -ENOMEM;
347347 kobject_init(kobj, &widget_ktype);
348348 err = kobject_add(kobj, parent, "%02x", nid);
349
- if (err < 0)
349
+ if (err < 0) {
350
+ kobject_put(kobj);
350351 return err;
352
+ }
351353 err = sysfs_create_group(kobj, group);
352354 if (err < 0) {
353355 kobject_put(kobj);
....@@ -395,6 +397,7 @@
395397 return 0;
396398 }
397399
400
+/* call with codec->widget_lock held */
398401 int hda_widget_sysfs_init(struct hdac_device *codec)
399402 {
400403 int err;
....@@ -411,11 +414,13 @@
411414 return 0;
412415 }
413416
417
+/* call with codec->widget_lock held */
414418 void hda_widget_sysfs_exit(struct hdac_device *codec)
415419 {
416420 widget_tree_free(codec);
417421 }
418422
423
+/* call with codec->widget_lock held */
419424 int hda_widget_sysfs_reinit(struct hdac_device *codec,
420425 hda_nid_t start_nid, int num_nodes)
421426 {
....@@ -425,7 +430,7 @@
425430 int i;
426431
427432 if (!codec->widgets)
428
- return hda_widget_sysfs_init(codec);
433
+ return 0;
429434
430435 tree = kmemdup(codec->widgets, sizeof(*tree), GFP_KERNEL);
431436 if (!tree)