diff options
author | Zach Reizner <zachr@google.com> | 2019-08-13 11:20:14 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-10-10 02:09:13 +0000 |
commit | a8adff0ff14f66570a3aa86f6106b55081526be1 (patch) | |
tree | 515ed01d01828a8622bac5203d508da708db5d41 /x86_64 | |
parent | 0b6f02fea7716ec5752555ea44aafed214b58faa (diff) | |
download | crosvm-a8adff0ff14f66570a3aa86f6106b55081526be1.tar crosvm-a8adff0ff14f66570a3aa86f6106b55081526be1.tar.gz crosvm-a8adff0ff14f66570a3aa86f6106b55081526be1.tar.bz2 crosvm-a8adff0ff14f66570a3aa86f6106b55081526be1.tar.lz crosvm-a8adff0ff14f66570a3aa86f6106b55081526be1.tar.xz crosvm-a8adff0ff14f66570a3aa86f6106b55081526be1.tar.zst crosvm-a8adff0ff14f66570a3aa86f6106b55081526be1.zip |
devices: jail serial device
This change plumbs the jail throughout the arch specific device creation process. It also adds a custom callback support for the ProxyDevice so that the main process can interrupt the child serial process when it has incoming bytes. TEST=crosvm run BUG=None Change-Id: I6af7d2cb0acbba9bf42eaeeb294cee2bce4a1f36 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1752589 Reviewed-by: Dylan Reid <dgreid@chromium.org> Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Tested-by: Zach Reizner <zachr@chromium.org> Commit-Queue: Zach Reizner <zachr@chromium.org>
Diffstat (limited to 'x86_64')
-rw-r--r-- | x86_64/src/lib.rs | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/x86_64/src/lib.rs b/x86_64/src/lib.rs index a047b8c..88c91f9 100644 --- a/x86_64/src/lib.rs +++ b/x86_64/src/lib.rs @@ -304,6 +304,7 @@ impl arch::LinuxArch for X8664arch { mut components: VmComponents, split_irqchip: bool, serial_parameters: &BTreeMap<u8, SerialParameters>, + serial_jail: Option<Minijail>, create_devices: F, ) -> Result<RunnableLinuxVm> where @@ -366,7 +367,7 @@ impl arch::LinuxArch for X8664arch { )?; let (stdio_serial_num, stdio_serial) = - Self::setup_serial_devices(&mut vm, &mut io_bus, &serial_parameters)?; + Self::setup_serial_devices(&mut vm, &mut io_bus, serial_parameters, serial_jail)?; match components.vm_image { VmImage::Bios(ref mut bios) => Self::load_bios(&mem, bios)?, @@ -715,13 +716,19 @@ impl X8664arch { vm: &mut Vm, io_bus: &mut devices::Bus, serial_parameters: &BTreeMap<u8, SerialParameters>, - ) -> Result<(Option<u8>, Option<Arc<Mutex<devices::Serial>>>)> { + serial_jail: Option<Minijail>, + ) -> Result<(Option<u8>, Option<devices::SerialInput>)> { let com_evt_1_3 = EventFd::new().map_err(Error::CreateEventFd)?; let com_evt_2_4 = EventFd::new().map_err(Error::CreateEventFd)?; - let (stdio_serial_num, stdio_serial) = - arch::add_serial_devices(io_bus, &com_evt_1_3, &com_evt_2_4, &serial_parameters) - .map_err(Error::CreateSerialDevices)?; + let (stdio_serial_num, stdio_serial) = arch::add_serial_devices( + io_bus, + &com_evt_1_3, + &com_evt_2_4, + &serial_parameters, + serial_jail, + ) + .map_err(Error::CreateSerialDevices)?; vm.register_irqfd(&com_evt_1_3, X86_64_SERIAL_1_3_IRQ) .map_err(Error::RegisterIrqfd)?; |