Skip to content

Commit 7c53fa8

Browse files
juhaylinencarlescufi
authored andcommitted
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: Juha Ylinen <[email protected]>
1 parent 85dfe3d commit 7c53fa8

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

subsys/net/lib/lwm2m/lwm2m_engine.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1259,6 +1259,12 @@ int lwm2m_engine_pause(void)
12591259
suspend_engine_thread = true;
12601260
lwm2m_engine_wake_up();
12611261

1262+
/* Check if pause requested within a engine thread, a callback for example. */
1263+
if (engine_thread_id == k_current_get()) {
1264+
LOG_DBG("Pause requested");
1265+
return 0;
1266+
}
1267+
12621268
while (active_engine_thread) {
12631269
k_msleep(10);
12641270
}
@@ -1275,10 +1281,7 @@ int lwm2m_engine_resume(void)
12751281

12761282
k_thread_resume(engine_thread_id);
12771283
lwm2m_engine_wake_up();
1278-
while (!active_engine_thread) {
1279-
k_msleep(10);
1280-
}
1281-
LOG_INF("LWM2M engine thread resume");
1284+
12821285
return 0;
12831286
}
12841287

0 commit comments

Comments
 (0)