greybus: interface: fix hot-unplug control-connection timeouts

Set an interface disconnected flag when the interface has been
hot-unplugged (e.g. forcibly removed or after a reboot), and use it to
disable the control connection early when deregistering the interface
and its bundles.

This avoids a one-second (default) timeout for every enabled connection
(e.g. one per bundle) at hot-unplug, something which for the default
gpbridge manifest currently amounts to five seconds.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
diff --git a/drivers/staging/greybus/svc.c b/drivers/staging/greybus/svc.c
index c013083..5c4ca79 100644
--- a/drivers/staging/greybus/svc.c
+++ b/drivers/staging/greybus/svc.c
@@ -335,9 +335,10 @@
 static void gb_svc_intf_remove(struct gb_svc *svc, struct gb_interface *intf)
 {
 	u8 intf_id = intf->interface_id;
-	u8 device_id;
+	u8 device_id = intf->device_id;
 
-	device_id = intf->device_id;
+	intf->disconnected = true;
+
 	gb_interface_remove(intf);
 
 	/*