On 20.09.23 20:35, Kinsey Moore wrote:
[...]
@@ -1306,8 +1307,22 @@ static void process_delayed_work(void)
        while (!rtems_chain_is_tail(&process_work_chain, node)) {
                work = (struct delayed_work*) node;
                rtems_chain_node* next_node = rtems_chain_next(node);
+
+               /*
+                * Don't leave extracted node exposed to other operations
+                * under RTEMS_DEBUG
+                */
+#ifdef RTEMS_DEBUG
+               mutex_lock(&delayed_work_mutex);
+#endif
                rtems_chain_extract(node);
+#ifdef RTEMS_DEBUG
+               node->next = node;
+               mutex_unlock(&delayed_work_mutex);
+#endif
+
                work->callback(&work->work);
+               rtems_chain_set_off_chain(node);
                node = next_node;
        }
  }

This change makes no sense to me. The code should work regardless if RTEMS_DEBUG is defined or not.

--
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.hu...@embedded-brains.de
phone: +49-89-18 94 741 - 16
fax:   +49-89-18 94 741 - 08

Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to