diff --git a/kernel/iec_listener.c b/kernel/iec_listener.c index 7e25d49..1e8f0bb 100644 --- a/kernel/iec_listener.c +++ b/kernel/iec_listener.c @@ -286,6 +286,10 @@ static void run_state_machine(void) bool eoi; enum iec_rx rc; + if (kthread_should_stop()) { + iec_data_release(); + return; + } if (db_reset_asserted()) goto reset; @@ -313,6 +317,10 @@ static void run_state_machine(void) /* LISTENER: data phase */ emit_record(IEC_KIND_EVENT, IEC_EV_ATN_RELEASED, IEC_FLAG_ADDRESSED); for (;;) { + if (kthread_should_stop()) { + iec_data_release(); + return; + } if (db_reset_asserted()) goto reset; if (db_atn_asserted()) {