From 9f2c3ceebe191c008f004bd8dba39ebc56df51ee Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 15 Nov 2018 08:23:17 +0100 Subject: Fix locking issue in epoch_watchdog() The _Watchdog_Per_CPU_insert_ticks() assumes that interrupts are disabled. --- rtemsbsd/rtems/rtems-kernel-epoch.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'rtemsbsd') diff --git a/rtemsbsd/rtems/rtems-kernel-epoch.c b/rtemsbsd/rtems/rtems-kernel-epoch.c index 7d42bf32..063990b1 100644 --- a/rtemsbsd/rtems/rtems-kernel-epoch.c +++ b/rtemsbsd/rtems/rtems-kernel-epoch.c @@ -91,10 +91,13 @@ static void epoch_watchdog(Watchdog_Control *wdg) { struct epoch_pcpu *epcpu; + ISR_Level level; epcpu = __containerof(wdg, struct epoch_pcpu, wdg); + _ISR_Local_disable(level); _Watchdog_Per_CPU_insert_ticks(&epcpu->wdg, _Watchdog_Get_CPU(&epcpu->wdg), 1); + _ISR_Local_enable(level); if (RTEMS_PREDICT_FALSE(epcpu->cb_count != 0)) { rtems_interrupt_server_request_submit(&epcpu->irq_srv_req); -- cgit v1.2.3