From 42c19e14c56b67dfd800a4cf633ef75f19aaaa14 Mon Sep 17 00:00:00 2001 From: Bo Chen Date: Thu, 5 May 2022 13:29:01 -0700 Subject: [PATCH] vmm: Add 'shutdown()' to vCPU seccomp filter This is required when hot-removing a vfio-user device. Details code path below: Thread 6 "vcpu0" received signal SIGSYS, Bad system call. [Switching to Thread 0x7f8196889700 (LWP 2358305)] 0x00007f8196dae7ab in shutdown () at ../sysdeps/unix/syscall-template.S:78 78 T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS) (gdb) bt 0x00007f8196dae7ab in shutdown () at ../sysdeps/unix/syscall-template.S:78 0x000056189240737d in std::sys::unix::net::Socket::shutdown () at library/std/src/sys/unix/net.rs:383 std::os::unix::net::stream::UnixStream::shutdown () at library/std/src/os/unix/net/stream.rs:479 0x000056189210e23d in vfio_user::Client::shutdown (self=0x7f8190014300) at vfio_user/src/lib.rs:787 0x00005618920b9d02 in ::drop ( self=0x7f819002d7c0) at pci/src/vfio_user.rs:551 0x00005618920b8787 in core::ptr::drop_in_place () at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/ptr/mod.rs:188 0x00005618920b92e3 in core::ptr::drop_in_place> () at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/ptr/mod.rs:188 0x00005618920b9362 in core::ptr::drop_in_place> () at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/ptr/mod.rs:188 0x00005618920d8a3e in alloc::sync::Arc::drop_slow (self=0x7f81968852b8) at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/alloc/src/sync.rs:1092 0x00005618920ba273 in as core::ops::drop::Drop>::drop (self=0x7f81968852b8) at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/alloc/src/sync.rs:1688 0x00005618920b76fb in core::ptr::drop_in_place>> () at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/ptr/mod.rs:188 0x0000561891b5e47d in vmm::device_manager::DeviceManager::eject_device (self=0x7f8190009600, pci_segment_id=0, device_id=3) at vmm/src/device_manager.rs:4000 0x0000561891b674bc in ::write ( self=0x7f8190009600, base=70368744108032, offset=8, data=&[u8](size=4) = {...}) at vmm/src/device_manager.rs:4625 0x00005618921927d5 in vm_device::bus::Bus::write (self=0x7f8190006e00, addr=70368744108040, data=&[u8](size=4) = {...}) at vm-device/src/bus.rs:235 0x0000561891b72e10 in ::mmio_write ( self=0x7f81900097b0, gpa=70368744108040, data=&[u8](size=4) = {...}) at vmm/src/vm.rs:378 0x0000561892133ae2 in ::run ( self=0x7f8190013c90) at hypervisor/src/kvm/mod.rs:1114 0x0000561891914e85 in vmm::cpu::Vcpu::run (self=0x7f819001b230) at vmm/src/cpu.rs:348 0x000056189189f2cb in vmm::cpu::CpuManager::start_vcpu::{{closure}}::{{closure}} () at vmm/src/cpu.rs:953 Signed-off-by: Bo Chen --- vmm/src/seccomp_filters.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/vmm/src/seccomp_filters.rs b/vmm/src/seccomp_filters.rs index afcf50bdd..a3cc35ec1 100644 --- a/vmm/src/seccomp_filters.rs +++ b/vmm/src/seccomp_filters.rs @@ -686,6 +686,7 @@ fn vcpu_thread_rules() -> Result)>, BackendError> { (libc::SYS_rt_sigprocmask, vec![]), (libc::SYS_rt_sigreturn, vec![]), (libc::SYS_sendmsg, vec![]), + (libc::SYS_shutdown, vec![]), (libc::SYS_sigaltstack, vec![]), (libc::SYS_tgkill, vec![]), (libc::SYS_tkill, vec![]),