diff --git a/kernel/aster-nix/src/net/socket/vsock/mod.rs b/kernel/aster-nix/src/net/socket/vsock/mod.rs index 3a03761e0..a514cf469 100644 --- a/kernel/aster-nix/src/net/socket/vsock/mod.rs +++ b/kernel/aster-nix/src/net/socket/vsock/mod.rs @@ -2,7 +2,7 @@ use alloc::sync::Arc; -use aster_virtio::device::socket::{register_recv_callback, DEVICE_NAME}; +use aster_virtio::device::socket::{get_device, register_recv_callback, DEVICE_NAME}; use common::VsockSpace; use spin::Once; @@ -15,9 +15,11 @@ pub use stream::VsockStreamSocket; pub static VSOCK_GLOBAL: Once> = Once::new(); pub fn init() { - VSOCK_GLOBAL.call_once(|| Arc::new(VsockSpace::new())); - register_recv_callback(DEVICE_NAME, || { - let vsockspace = VSOCK_GLOBAL.get().unwrap(); - let _ = vsockspace.poll(); - }) + if get_device(DEVICE_NAME).is_some() { + VSOCK_GLOBAL.call_once(|| Arc::new(VsockSpace::new())); + register_recv_callback(DEVICE_NAME, || { + let vsockspace = VSOCK_GLOBAL.get().unwrap(); + let _ = vsockspace.poll(); + }) + } } diff --git a/regression/apps/scripts/run_vsock_test.sh b/regression/apps/scripts/run_vsock_test.sh index ce2d1c56c..a07f3dc41 100644 --- a/regression/apps/scripts/run_vsock_test.sh +++ b/regression/apps/scripts/run_vsock_test.sh @@ -8,6 +8,6 @@ VSOCK_DIR=/regression/vsock cd ${VSOCK_DIR} echo "Start vsock test......" -# ./vsock_server ./vsock_client +./vsock_server echo "Vsock test passed."