From 46e70a5472998d01bf189bea6cddc4bc4005961e Mon Sep 17 00:00:00 2001 From: Red Bear OS Date: Thu, 9 Jul 2026 00:24:40 +0300 Subject: [PATCH] usbscsid: replace .unwrap() in runtime with explicit error handling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two runtime .unwrap() calls in the event loop are replaced with explicit error logging and process::exit(1): 1. event::EventQueue::new() — fail to create event queue 2. event_queue.subscribe() — fail to subscribe to scheme events Previously these panicked the daemon if the event subsystem was unavailable. Now they log a clear error and exit gracefully. Resolves IMPROVEMENT-PLAN §3.6: 'usbscsid: Fix .expect() in runtime'. --- drivers/storage/usbscsid/src/main.rs | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/drivers/storage/usbscsid/src/main.rs b/drivers/storage/usbscsid/src/main.rs index 097f61f39b..d90966dd52 100644 --- a/drivers/storage/usbscsid/src/main.rs +++ b/drivers/storage/usbscsid/src/main.rs @@ -2,6 +2,7 @@ use std::collections::BTreeMap; use std::env; use driver_block::{Disk, DiskScheme, ExecutorTrait}; +use log::error; use syscall::{Error, EIO}; use xhcid_interface::{ConfigureEndpointsReq, PortId, XhciClientHandle}; @@ -107,7 +108,13 @@ fn daemon(daemon: daemon::Daemon) -> ! { println!("DISK CONTENT: {}", base64::encode(&buffer[..])); } - let event_queue = event::EventQueue::new().unwrap(); + let event_queue = match event::EventQueue::new() { + Ok(q) => q, + Err(e) => { + error!("usbscsid: failed to create event queue: {e}"); + std::process::exit(1); + } + }; event::user_data! { enum Event { @@ -133,13 +140,14 @@ fn daemon(daemon: daemon::Daemon) -> ! { //libredox::call::setrens(0, 0).expect("nvmed: failed to enter null namespace"); - event_queue - .subscribe( - scheme.event_handle().raw(), - Event::Scheme, - event::EventFlags::READ, - ) - .unwrap(); + if let Err(e) = event_queue.subscribe( + scheme.event_handle().raw(), + Event::Scheme, + event::EventFlags::READ, + ) { + error!("usbscsid: failed to subscribe to events: {e}"); + std::process::exit(1); + } for event in event_queue { let event = match event {