return 0;
 }
 
-static void gb_svc_intf_remove(struct gb_svc *svc, struct gb_interface *intf)
-{
-       intf->disconnected = true;
-
-       gb_interface_disable(intf);
-       gb_interface_deactivate(intf);
-       gb_interface_remove(intf);
-}
-
 static void gb_svc_process_intf_hotplug(struct gb_operation *operation)
 {
        struct gb_svc_intf_hotplug_request *request;
                return;
        }
 
-       gb_svc_intf_remove(svc, intf);
+       /* Mark as disconnected to prevent I/O during disable. */
+       intf->disconnected = true;
+
+       gb_interface_disable(intf);
+       gb_interface_deactivate(intf);
+       gb_interface_remove(intf);
 }
 
 static void gb_svc_process_deferred_request(struct work_struct *work)