[socket] Remove CLOEXEC flag set for vm_payload_service socket fd
As the CLOEXEC flag is set in android_get_control_socket() now.
Bug: 275729094
Test: atest microdroid_manager
Change-Id: Ia297c61b3ce251016aad79d480fbb395224840f2
diff --git a/microdroid_manager/src/main.rs b/microdroid_manager/src/main.rs
index 1e1a609..be86247 100644
--- a/microdroid_manager/src/main.rs
+++ b/microdroid_manager/src/main.rs
@@ -38,11 +38,10 @@
use glob::glob;
use itertools::sorted;
use libc::VMADDR_CID_HOST;
-use log::{error, info, warn};
+use log::{error, info};
use keystore2_crypto::ZVec;
use microdroid_metadata::{write_metadata, Metadata, PayloadMetadata};
use microdroid_payload_config::{OsConfig, Task, TaskType, VmPayloadConfig};
-use nix::fcntl::{fcntl, F_SETFD, FdFlag};
use nix::sys::signal::Signal;
use openssl::sha::Sha512;
use payload::{get_apex_data_from_payload, load_metadata, to_metadata};
@@ -191,11 +190,11 @@
})
}
-fn set_cloexec_on_vm_payload_service_socket() -> Result<()> {
- let fd = android_get_control_socket(VM_PAYLOAD_SERVICE_SOCKET_NAME)?;
+fn prepare_vm_payload_service_socket() -> Result<()> {
+ android_get_control_socket(VM_PAYLOAD_SERVICE_SOCKET_NAME)?;
- fcntl(fd, F_SETFD(FdFlag::FD_CLOEXEC))?;
-
+ // TODO(b/275729094): Convert the obtained file descriptor to `OwnedFd`
+ // and use it to set the `RpcServer`.
Ok(())
}
@@ -203,9 +202,11 @@
let _ignored = kernlog::init();
info!("started.");
- if let Err(e) = set_cloexec_on_vm_payload_service_socket() {
- warn!("Failed to set cloexec on vm payload socket: {:?}", e);
- }
+ // To ensure that the CLOEXEC flag is set on the file descriptor as early as possible,
+ // it is necessary to fetch the socket corresponding to vm_payload_service at the
+ // very beginning, as android_get_control_socket() sets the CLOEXEC flag on the file
+ // descriptor.
+ prepare_vm_payload_service_socket()?;
load_crashkernel_if_supported().context("Failed to load crashkernel")?;