From 210a15794c9ceb026155554d367ccdb7a388f7c1 Mon Sep 17 00:00:00 2001 From: Fuu Date: Wed, 7 Jun 2023 16:08:22 +0800 Subject: [PATCH] dragonball: avoid obtaining lock twice in create_stdio_console Fixes #7055 Signed-off-by: Fuu --- .../src/device_manager/console_manager.rs | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/dragonball/src/device_manager/console_manager.rs b/src/dragonball/src/device_manager/console_manager.rs index 23cf6886fe..d5adb74e68 100644 --- a/src/dragonball/src/device_manager/console_manager.rs +++ b/src/dragonball/src/device_manager/console_manager.rs @@ -79,16 +79,17 @@ impl ConsoleManager { .unwrap() .set_output_stream(Some(Box::new(std::io::stdout()))); let stdin_handle = std::io::stdin(); - stdin_handle - .lock() - .set_raw_mode() - .map_err(|e| DeviceMgrError::ConsoleManager(ConsoleManagerError::StdinHandle(e)))?; - stdin_handle - .lock() - .set_non_block(true) - .map_err(ConsoleManagerError::StdinHandle) - .map_err(DeviceMgrError::ConsoleManager)?; - + { + let guard = stdin_handle.lock(); + guard + .set_raw_mode() + .map_err(ConsoleManagerError::StdinHandle) + .map_err(DeviceMgrError::ConsoleManager)?; + guard + .set_non_block(true) + .map_err(ConsoleManagerError::StdinHandle) + .map_err(DeviceMgrError::ConsoleManager)?; + } let handler = ConsoleEpollHandler::new(device, Some(stdin_handle), None, &self.logger); self.subscriber_id = Some(self.epoll_mgr.add_subscriber(Box::new(handler))); self.backend = Some(Backend::StdinHandle(std::io::stdin()));