From e14f9350632934323fcd1cda55d8983f82d3e8cd Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Nov 2025 20:59:44 -0700 Subject: [PATCH] Ensure pipe is_alive is set before triggering event or condition --- src/scheme/pipe.rs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/scheme/pipe.rs b/src/scheme/pipe.rs index 42feecf2e2..34be346ffa 100644 --- a/src/scheme/pipe.rs +++ b/src/scheme/pipe.rs @@ -102,17 +102,15 @@ impl KernelScheme for PipeScheme { let scheme_id = GlobalSchemes::Pipe.scheme_id(); let can_remove = if is_write_not_read { - event::trigger(scheme_id, key, EVENT_READ); - - pipe.read_condition.notify(token); pipe.writer_is_alive.store(false, Ordering::SeqCst); + event::trigger(scheme_id, key, EVENT_READ); + pipe.read_condition.notify(token); !pipe.reader_is_alive.load(Ordering::SeqCst) } else { - event::trigger(scheme_id, key | WRITE_NOT_READ_BIT, EVENT_WRITE); - - pipe.write_condition.notify(token); pipe.reader_is_alive.store(false, Ordering::SeqCst); + event::trigger(scheme_id, key | WRITE_NOT_READ_BIT, EVENT_WRITE); + pipe.write_condition.notify(token); !pipe.writer_is_alive.load(Ordering::SeqCst) };