From: Johan Hovold Date: Wed, 25 Nov 2015 14:59:25 +0000 (+0100) Subject: greybus: manifest: refactor cport-descriptor release X-Git-Tag: v4.9.8~1233^2~378^2~21^2~988 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f2152eb33dec35703176e792da2769e88e5a81d3;p=platform%2Fkernel%2Flinux-rpi3.git greybus: manifest: refactor cport-descriptor release Add helper function to release cport-descriptors with a given bundle id. Signed-off-by: Johan Hovold Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/greybus/manifest.c b/drivers/staging/greybus/manifest.c index 9252bf4..4fdb98d 100644 --- a/drivers/staging/greybus/manifest.c +++ b/drivers/staging/greybus/manifest.c @@ -60,6 +60,22 @@ static void release_manifest_descriptors(struct gb_interface *intf) release_manifest_descriptor(descriptor); } +static void release_cport_descriptors(struct list_head *head, u8 bundle_id) +{ + struct manifest_desc *desc, *tmp; + struct greybus_descriptor_cport *desc_cport; + + list_for_each_entry_safe(desc, tmp, head, links) { + desc_cport = desc->data; + + if (desc->type != GREYBUS_TYPE_CPORT) + continue; + + if (desc_cport->bundle == bundle_id) + release_manifest_descriptor(desc); + } +} + static struct manifest_desc *get_next_bundle_desc(struct gb_interface *intf) { struct manifest_desc *descriptor; @@ -275,14 +291,7 @@ 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); - } + release_cport_descriptors(&intf->manifest_descs, bundle_id); return 0; /* Error; count should also be 0 */ }