On Mon, Nov 04, 2024 at 10:03:59AM +0800, Chao Gao wrote: > >+static int __tdx_td_init(struct kvm *kvm) > >+{ > >+ struct kvm_tdx *kvm_tdx = to_kvm_tdx(kvm); > >+ cpumask_var_t packages; > >+ unsigned long *tdcs_pa = NULL; > >+ unsigned long tdr_pa = 0; > >+ unsigned long va; > >+ int ret, i; > >+ u64 err; > >+ > >+ ret = tdx_guest_keyid_alloc(); > >+ if (ret < 0) > >+ return ret; > >+ kvm_tdx->hkid = ret; > >+ > >+ va = __get_free_page(GFP_KERNEL_ACCOUNT); > >+ if (!va) > >+ goto free_hkid; > > @ret should be set to -ENOMEM before goto. otherwise, the error code would be > the guest HKID. Good catch. > >+ if (!zalloc_cpumask_var(&packages, GFP_KERNEL)) { > >+ ret = -ENOMEM; > > maybe just hoist this line before allocating tdr. Yeah it should be initialized earlier. Tony