Skip to content

Commit ab037c6

Browse files
committed
InternetSocket: better protect _callback
sigio callbacks can be triggered from interrupt, so changing _callback needs critical section protection, not just a mutex.
1 parent 0f6a4cd commit ab037c6

File tree

3 files changed

+4
-2
lines changed

3 files changed

+4
-2
lines changed

UNITTESTS/features/netsocket/DTLSSocket/unittest.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ set(unittest-test-sources
2222
features/netsocket/DTLSSocket/test_DTLSSocket.cpp
2323
stubs/Mutex_stub.cpp
2424
stubs/mbed_assert_stub.c
25+
stubs/mbed_critical_stub.c
2526
stubs/equeue_stub.c
2627
../features/nanostack/coap-service/test/coap-service/unittest/stub/mbedtls_stub.c
2728
stubs/EventQueue_stub.cpp

UNITTESTS/features/netsocket/TLSSocket/unittest.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ set(unittest-test-sources
2121
features/netsocket/TLSSocket/test_TLSSocket.cpp
2222
stubs/Mutex_stub.cpp
2323
stubs/mbed_assert_stub.c
24+
stubs/mbed_critical_stub.c
2425
stubs/equeue_stub.c
2526
../features/nanostack/coap-service/test/coap-service/unittest/stub/mbedtls_stub.c
2627
stubs/EventQueue_stub.cpp

features/netsocket/InternetSocket.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,9 +207,9 @@ void InternetSocket::event()
207207

208208
void InternetSocket::sigio(Callback<void()> callback)
209209
{
210-
_lock.lock();
210+
core_util_critical_section_enter();
211211
_callback = callback;
212-
_lock.unlock();
212+
core_util_critical_section_exit();
213213
}
214214

215215
void InternetSocket::attach(Callback<void()> callback)

0 commit comments

Comments
 (0)