mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2024-12-22 13:45:20 +00:00
vmm: Add valid FDs for TAP devices to 'VmConfig::preserved_fds'
In this way, valid FDs for TAP devices will be closed when the holding VmConfig instance is destroyed. Signed-off-by: Bo Chen <chen.bo@intel.com>
This commit is contained in:
parent
269844da73
commit
2724edd1e5
@ -2406,26 +2406,31 @@ impl DeviceManager {
|
|||||||
.map_err(DeviceManagerError::CreateVirtioNet)?,
|
.map_err(DeviceManagerError::CreateVirtioNet)?,
|
||||||
))
|
))
|
||||||
} else if let Some(fds) = &net_cfg.fds {
|
} else if let Some(fds) = &net_cfg.fds {
|
||||||
Arc::new(Mutex::new(
|
let net = virtio_devices::Net::from_tap_fds(
|
||||||
virtio_devices::Net::from_tap_fds(
|
id.clone(),
|
||||||
id.clone(),
|
fds,
|
||||||
fds,
|
Some(net_cfg.mac),
|
||||||
Some(net_cfg.mac),
|
net_cfg.mtu,
|
||||||
net_cfg.mtu,
|
self.force_iommu | net_cfg.iommu,
|
||||||
self.force_iommu | net_cfg.iommu,
|
net_cfg.queue_size,
|
||||||
net_cfg.queue_size,
|
self.seccomp_action.clone(),
|
||||||
self.seccomp_action.clone(),
|
net_cfg.rate_limiter_config,
|
||||||
net_cfg.rate_limiter_config,
|
self.exit_evt
|
||||||
self.exit_evt
|
.try_clone()
|
||||||
.try_clone()
|
.map_err(DeviceManagerError::EventFd)?,
|
||||||
.map_err(DeviceManagerError::EventFd)?,
|
state,
|
||||||
state,
|
net_cfg.offload_tso,
|
||||||
net_cfg.offload_tso,
|
net_cfg.offload_ufo,
|
||||||
net_cfg.offload_ufo,
|
net_cfg.offload_csum,
|
||||||
net_cfg.offload_csum,
|
)
|
||||||
)
|
.map_err(DeviceManagerError::CreateVirtioNet)?;
|
||||||
.map_err(DeviceManagerError::CreateVirtioNet)?,
|
|
||||||
))
|
// SAFETY: 'fds' are valid because TAP devices are created successfully
|
||||||
|
unsafe {
|
||||||
|
self.config.lock().unwrap().add_preserved_fds(fds.clone());
|
||||||
|
}
|
||||||
|
|
||||||
|
Arc::new(Mutex::new(net))
|
||||||
} else {
|
} else {
|
||||||
Arc::new(Mutex::new(
|
Arc::new(Mutex::new(
|
||||||
virtio_devices::Net::new(
|
virtio_devices::Net::new(
|
||||||
|
Loading…
Reference in New Issue
Block a user