UPSTREAM: sim-mbim: fix `preload_cancellable` bug that causes a crash In merge request !1405, when handling subscriber_ready_status_ready() fails, it exits early and allows preload retry without resetting `self->priv->preload_cancellable`. When the preload_subscriber_info() runs again, it fails at g_assert check and causes a crash. Before !1405, `self->priv->preload_cancellable` is reset within application_list_query_ready(). (cherry picked from commit 469c6865041ee524067497b450fb40ef4daa235d) BUG=b:451656924 TEST=SIM switch and cellular OTA connectivity verification. Change-Id: I428c6f7b1639e7e1d7b98de0722684e8b8c1a33f Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/modemmanager-next/+/7048764 Tested-by: Rukun Mao <rmao@google.com> Reviewed-by: Aleksander Morgado <aleksandermj@google.com> Commit-Queue: Rukun Mao <rmao@google.com>
diff --git a/src/mm-sim-mbim.c b/src/mm-sim-mbim.c index f44ce9e..0dfcd81 100644 --- a/src/mm-sim-mbim.c +++ b/src/mm-sim-mbim.c
@@ -340,6 +340,7 @@ if (self->priv->preload_error || ready_state == MBIM_SUBSCRIBER_READY_STATE_NOT_INITIALIZED) { self->priv->preload = FALSE; + g_clear_object (&self->priv->preload_cancellable); if (self->priv->preload_error) g_task_return_error (task, g_steal_pointer (&self->priv->preload_error)); else