Commit 7c53fa86 authored by Juha Ylinen's avatar Juha Ylinen Committed by Carles Cufi
Browse files

net: lwm2m: Fix deadlock when calling lwm2m_engine_pause()



lwm2m_engine_pause() caused deadlock if it was called within
engine thread.

Remove while loop from lwm2m_engine_resume().

Signed-off-by: default avatarJuha Ylinen <juha.ylinen@nordicsemi.no>
parent 85dfe3df
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -1259,6 +1259,12 @@ int lwm2m_engine_pause(void)
	suspend_engine_thread = true;
	lwm2m_engine_wake_up();

	/* Check if pause requested within a engine thread, a callback for example. */
	if (engine_thread_id == k_current_get()) {
		LOG_DBG("Pause requested");
		return 0;
	}

	while (active_engine_thread) {
		k_msleep(10);
	}
@@ -1275,10 +1281,7 @@ int lwm2m_engine_resume(void)

	k_thread_resume(engine_thread_id);
	lwm2m_engine_wake_up();
	while (!active_engine_thread) {
		k_msleep(10);
	}
	LOG_INF("LWM2M engine thread resume");

	return 0;
}