greybus: manifest: release cport descriptors to avoid 'excess descriptors' warning
authorViresh Kumar <viresh.kumar@linaro.org>
Mon, 7 Sep 2015 10:31:20 +0000 (16:01 +0530)
committerGreg Kroah-Hartman <gregkh@google.com>
Tue, 15 Sep 2015 04:19:46 +0000 (21:19 -0700)
If we fail to initialize a cport of a bundle, we abort the entire
bundle. But that leads to following (unnecessary) warnings as few of the
cport descriptors, belonging to the aborted bundle were never parsed:

"greybus: excess descriptors in interface manifest"

Fix that by releasing all cport descriptors for the aborted bundle.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/manifest.c

index eda0f55580e36a74662decff5cd8c5d23d9f43b8..2264ec5914f927a753a6db5329d1ebb60b0002ab 100644 (file)
@@ -258,6 +258,19 @@ print_error_exit:
                GREYBUS_PROTOCOL_CONTROL);
 exit:
 
+       /*
+        * Free all cports for this bundle to avoid 'excess descriptors'
+        * warnings.
+        */
+       list_for_each_entry_safe(desc, next, &intf->manifest_descs, links) {
+               struct greybus_descriptor_cport *desc_cport = desc->data;
+
+               if (desc->type != GREYBUS_TYPE_CPORT)
+                       continue;
+               if (desc_cport->bundle == bundle_id)
+                       release_manifest_descriptor(desc);
+       }
+
        return 0;       /* Error; count should also be 0 */
 }