diff --git a/extmod/modlwip.c b/extmod/modlwip.c
index 778a741b3d5fbddcf7587386235fda0737bf286e..4924130ccf169cbaab01fb90495bb10c4017cfbc 100644
--- a/extmod/modlwip.c
+++ b/extmod/modlwip.c
@@ -264,7 +264,7 @@ static inline void poll_sockets(void) {
 
 static inline void exec_user_callback(lwip_socket_obj_t *socket) {
     if (socket->callback != MP_OBJ_NULL) {
-        mp_call_function_1(socket->callback, socket);
+        mp_call_function_1_protected(socket->callback, socket);
     }
 }