Allow a new owner to claim a VM ID
Bug: 294177871
Test: virtualizationservice_test
Change-Id: I285175c8d11cc402b03dd750fbe7cbf47aebae78
diff --git a/virtualizationservice/src/aidl.rs b/virtualizationservice/src/aidl.rs
index 05f3cf6..5c1c079 100644
--- a/virtualizationservice/src/aidl.rs
+++ b/virtualizationservice/src/aidl.rs
@@ -436,6 +436,28 @@
}
Ok(())
}
+
+ fn claimVmInstance(&self, instance_id: &[u8; 64]) -> binder::Result<()> {
+ let state = &mut *self.state.lock().unwrap();
+ if let Some(sk_state) = &mut state.sk_state {
+ let uid = get_calling_uid();
+ info!(
+ "Claiming a VM's instance_id: {:?}, for uid: {:?}",
+ hex::encode(instance_id),
+ uid
+ );
+
+ let user_id = multiuser_get_user_id(uid);
+ let app_id = multiuser_get_app_id(uid);
+ info!("Recording possible new owner of state for (user_id={user_id}, app_id={app_id})");
+ if let Err(e) = sk_state.add_id(instance_id, user_id, app_id) {
+ error!("Failed to update the instance_id owner: {e:?}");
+ }
+ } else {
+ info!("ignoring claimVmInstance() as no ISecretkeeper");
+ }
+ Ok(())
+ }
}
impl IVirtualizationMaintenance for VirtualizationServiceInternal {