Hi Bertrand, > @@ -232,12 +236,122 @@ static int speedup_disable(struct ofono_modem *modem) > g_at_chat_cancel_all(data->aux); > g_at_chat_unregister_all(data->aux); > > + /* Cleanup potential online enable polling */ > + if (data->online_poll_source > 0) { > + g_source_remove(data->online_poll_source); > + data->online_poll_source = 0; > + > + g_free(data->online_cbd); > + data->online_cbd = NULL; > + } > + This looks fine, but it is actually in the wrong place. The core doesn't allow concurrent online and disable operations. This really belongs in speedup_remove so that you take care of the case where the modem is physically yanked out. Regards, -Denis