hypervisor: haxm: replace MemoryMapping with raw ptrs

The haxm vcpu code abused MemoryMapping to hold what is effectively a
raw pointer, not something created by mmap()/MapViewOfFile().

Additionally, the MemoryMapping was converted into a pointer and then
into a Rust &ref, which is inappropriate for memory that can be aliased
by the hypervisor.

Use raw pointers instead of unsoundly casting into a reference and add
unsafe blocks as appropriate.

Change-Id: I218093d512419beb1d9f23df9a45c7413c0f83c0
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3827178
Reviewed-by: Vaibhav Nagarnaik <vnagarnaik@google.com>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Dennis Kempin <denniskempin@google.com>
3 files changed
tree: 85e7049066dd1c2fbc368c7b35b836042f882f0b
  1. .cargo/
  2. .devcontainer/
  3. .github/
  4. .vscode/
  5. aarch64/
  6. acpi_tables/
  7. anti_tamper/
  8. arch/
  9. argh_helpers/
  10. base/
  11. bin/
  12. bit_field/
  13. broker_ipc/
  14. ci/
  15. common/
  16. cros_async/
  17. crosvm-fuzz/
  18. crosvm_control/
  19. crosvm_plugin/
  20. devices/
  21. disk/
  22. docs/
  23. fuse/
  24. gpu_display/
  25. hypervisor/
  26. infra/
  27. integration_tests/
  28. io_uring/
  29. kernel_cmdline/
  30. kernel_loader/
  31. kvm/
  32. kvm_sys/
  33. libcras_stub/
  34. linux_input_sys/
  35. logo/
  36. media/
  37. metrics/
  38. net_sys/
  39. net_util/
  40. power_monitor/
  41. protos/
  42. qcow_utils/
  43. resources/
  44. rutabaga_gfx/
  45. seccomp/
  46. serde_keyvalue/
  47. src/
  48. system_api_stub/
  49. tests/
  50. third_party/
  51. tools/
  52. tpm2/
  53. tpm2-sys/
  54. tracing/
  55. tube_transporter/
  56. usb_sys/
  57. usb_util/
  58. vfio_sys/
  59. vhost/
  60. virtio_sys/
  61. vm_control/
  62. vm_memory/
  63. win_audio/
  64. win_util/
  65. x86_64/
  66. .dockerignore
  67. .gitignore
  68. .gitmodules
  69. .rustfmt.toml
  70. ARCHITECTURE.md
  71. build.rs
  72. Cargo.lock
  73. Cargo.toml
  74. CONTRIBUTING.md
  75. LICENSE
  76. mypy.ini
  77. navbar.md
  78. OWNERS
  79. PRESUBMIT.cfg
  80. pyproject.toml
  81. README.chromeos.md
  82. README.md
  83. run_tests
  84. rust-toolchain
  85. setup_cros_cargo.sh
  86. test_all
  87. unblocked_terms.txt
README.md

crosvm - The Chrome OS Virtual Machine Monitor

crosvm is a virtual machine monitor (VMM) based on Linux’s KVM hypervisor, with a focus on simplicity, security, and speed. crosvm is intended to run Linux guests, originally as a security boundary for running native applications on the Chrome OS platform. Compared to QEMU, crosvm doesn’t emulate architectures or real hardware, instead concentrating on paravirtualized devices, such as the virtio standard.

crosvm is currently used to run Linux/Android guests on Chrome OS devices.

Logo