On 03/01/2020 00:24, Gedare Bloom wrote:
    while ( !_Chain_Is_empty( &the_thread->Priority_node.Inherited_priorities ) 
) {
+    _ISR_Disable( level );
      _Thread_Dequeue_priority_node(
        ((Thread_Priority_node*)_Chain_First(
          &the_thread->Priority_node.Inherited_priorities
        ))
      );
+    _ISR_Enable( level );
    }

I don't know how the stuff works in detail, but this looks like a TOCTOU problem. Should this be changed into:

_ISR_Disable( level );
while ( !_Chain_Is_empty( &the_thread->Priority_node.Inherited_priorities ) ) {
  _Thread_Dequeue_priority_node(
    (Thread_Priority_node *) _Chain_First(
      &the_thread->Priority_node.Inherited_priorities
    )
  );
  _ISR_Flash( level );
}
_ISR_Enable( level );

--
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.hu...@embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to