Am 6. September 2017 16:12:47 MESZ
schrieb David Lockyer
Hi,
I have a project that uses an STM32F MCU running FreeRTOS
(cortex mpu port) & lwip, with the MPU enabled.
I'm upgrading to lwip 2.0.2 from lwip 1.4.1, that I had to
customize to be compatible with the MPU, in particular in
lwip_select().
The motivation was to use the LWIP_MPU_COMPATIBLE define,
so a direct modification of the stack source was not
required. However for me it still appears to try to access
another threads memory, triggering an exception.
The changes I had to make were:
Index: lib/lwip-2.0.2/src/api/sockets.c
===================================================================
--- lib/lwip-2.0.2/src/api/sockets.c (revision xxxxx)
+++ lib/lwip-2.0.2/src/api/sockets.c (working copy)
@@ -1428,7 +1428,9 @@
/* Put this select_cb on top of list */
select_cb.next = select_cb_list;
if (select_cb_list != NULL) {
+ RAISE_PRIVILEGE();
select_cb_list->prev = &select_cb;
+ RESET_PRIVILEGE();
}
select_cb_list = &select_cb;
/* Increasing this counter tells event_callback
that the list has changed. */
@@ -1508,7 +1510,9 @@
/* Take us off the list */
SYS_ARCH_PROTECT(lev);
if (select_cb.next != NULL) {
+ RAISE_PRIVILEGE();
select_cb.next->prev = select_cb.prev;
+ RESET_PRIVILEGE();
}
if (select_cb_list == &select_cb) {
LWIP_ASSERT("select_cb.prev == NULL",
select_cb.prev == NULL);
@@ -1515,7 +1519,9 @@
select_cb_list = select_cb.next;
} else {
LWIP_ASSERT("select_cb.prev != NULL",
select_cb.prev != NULL);
+ RAISE_PRIVILEGE();
select_cb.prev->next = select_cb.next;
+ RESET_PRIVILEGE();
}
/* Increasing this counter tells event_callback
that the list has changed. */
select_cb_ctr++;
Is there something else I missed here that would remove the
need for this modification?
Kind regards,
David Lockyer
______________________________________________________________________
This email has been scanned by the Symantec Email
Security.cloud service.
For more information please visit http://www.symanteccloud.com
______________________________________________________________________