kernel: fix mailbox usage of SYS_DLIST_FOR_EACH_NODE()
SYS_DLIST_FOR_EACH_NODE() is marked as non-safe when an item is removed from the list while looping over it. This is not true per-se, since the item, when removed, keeps its next and prev pointers intact; however, it is true if the item is then put into a list, be it a different one or the same one. To prevent this, SYS_DLIST_FOR_EACH_NODE_SAFE() must be used. _mbox_message_put() can remove items from the rx queue and then put them in the ready queue: this would cause the loop to start processing other ready threads as item in the rx queue. k_mbox_get() also removes items, from the tx queue, but does not seem to add them to another list; however, it now uses the safe version as well, since that is the proper usage. Change-Id: Ieccbff238fc8a036c0d53d873eaaf55f4f5a14af Signed-off-by:Benjamin Walsh <benjamin.walsh@windriver.com> Signed-off-by:
Anas Nashif <anas.nashif@intel.com>
Loading
Please sign in to comment