From 80d1ede88ab081bd901bd5b3dc2461083915d1d1 Mon Sep 17 00:00:00 2001 From: Viresh Kumar Date: Wed, 23 Sep 2015 16:48:10 -0700 Subject: [PATCH] greybus: interface: Pass interface pointer to gb_interface_remove() The callers already have a valid interface pointer and there is no need for gb_interface_remove() to find the interface again. Signed-off-by: Viresh Kumar Reviewed-by: Johan Hovold Signed-off-by: Greg Kroah-Hartman --- drivers/staging/greybus/interface.c | 29 +++++++++-------------------- drivers/staging/greybus/interface.h | 2 +- drivers/staging/greybus/svc.c | 4 ++-- 3 files changed, 12 insertions(+), 23 deletions(-) diff --git a/drivers/staging/greybus/interface.c b/drivers/staging/greybus/interface.c index c38fb8b..b0253ce 100644 --- a/drivers/staging/greybus/interface.c +++ b/drivers/staging/greybus/interface.c @@ -183,7 +183,7 @@ put_module: /* * Tear down a previously set up module. */ -static void interface_destroy(struct gb_interface *intf) +void gb_interface_remove(struct gb_interface *intf) { struct gb_module *module; struct gb_bundle *bundle; @@ -207,6 +207,14 @@ static void interface_destroy(struct gb_interface *intf) put_device(&module->dev); } +void gb_interfaces_remove(struct greybus_host_device *hd) +{ + struct gb_interface *intf, *temp; + + list_for_each_entry_safe(intf, temp, &hd->interfaces, links) + gb_interface_remove(intf); +} + /** * gb_interface_init * @@ -273,22 +281,3 @@ free_manifest: kfree(manifest); return ret; } - -void gb_interface_remove(struct greybus_host_device *hd, u8 interface_id) -{ - struct gb_interface *intf = gb_interface_find(hd, interface_id); - - if (intf) - interface_destroy(intf); - else - dev_err(hd->parent, "interface id %d not found\n", - interface_id); -} - -void gb_interfaces_remove(struct greybus_host_device *hd) -{ - struct gb_interface *intf, *temp; - - list_for_each_entry_safe(intf, temp, &hd->interfaces, links) - interface_destroy(intf); -} diff --git a/drivers/staging/greybus/interface.h b/drivers/staging/greybus/interface.h index 38210ad..42b5d01 100644 --- a/drivers/staging/greybus/interface.h +++ b/drivers/staging/greybus/interface.h @@ -59,7 +59,7 @@ struct gb_interface *gb_interface_create(struct greybus_host_device *hd, u8 interface_id); void gb_interface_destroy(struct gb_interface *intf); int gb_interface_init(struct gb_interface *intf, u8 device_id); -void gb_interface_remove(struct greybus_host_device *hd, u8 interface_id); +void gb_interface_remove(struct gb_interface *intf); void gb_interfaces_remove(struct greybus_host_device *hd); int gb_create_bundle_connection(struct gb_interface *intf, u8 class); diff --git a/drivers/staging/greybus/svc.c b/drivers/staging/greybus/svc.c index b59d76f..da2ffd6 100644 --- a/drivers/staging/greybus/svc.c +++ b/drivers/staging/greybus/svc.c @@ -374,7 +374,7 @@ static void svc_intf_remove(struct gb_connection *connection, u8 device_id; device_id = intf->device_id; - gb_interface_remove(hd, intf_id); + gb_interface_remove(intf); /* * Destroy the two-way route between the AP and the interface. @@ -497,7 +497,7 @@ svc_id_free: ida_put: ida_simple_remove(&svc->device_id_map, device_id); destroy_interface: - gb_interface_remove(hd, intf_id); + gb_interface_remove(intf); free_svc_hotplug: kfree(svc_hotplug); } -- 2.7.4