summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/modem.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/modem.c b/src/modem.c
index ec723e50..012c249f 100644
--- a/src/modem.c
+++ b/src/modem.c
@@ -1219,7 +1219,19 @@ int ofono_modem_driver_register(const struct ofono_modem_driver *d)
void ofono_modem_driver_unregister(const struct ofono_modem_driver *d)
{
+ GSList *l;
+ struct ofono_modem *modem;
+
DBG("driver: %p, name: %s", d, d->name);
g_driver_list = g_slist_remove(g_driver_list, (void *)d);
+
+ for (l = g_modem_list; l; l = l->next) {
+ modem = l->data;
+
+ if (modem->driver != d)
+ continue;
+
+ modem_unregister(modem);
+ }
}