@@ -1010,9 +1010,12 @@ static int __check_host_shared_guest(struct pkvm_hyp_vm *vm, u64 *__phys, u64 ip
10101010 return ret ;
10111011 if (!kvm_pte_valid (pte ))
10121012 return - ENOENT ;
1013- if (kvm_granule_size (level ) != size )
1013+ if (size && kvm_granule_size (level ) != size )
10141014 return - E2BIG ;
10151015
1016+ if (!size )
1017+ size = kvm_granule_size (level );
1018+
10161019 state = guest_get_page_state (pte , ipa );
10171020 if (state != PKVM_PAGE_SHARED_BORROWED )
10181021 return - EPERM ;
@@ -1100,7 +1103,7 @@ int __pkvm_host_relax_perms_guest(u64 gfn, struct pkvm_hyp_vcpu *vcpu, enum kvm_
11001103 if (prot & ~KVM_PGTABLE_PROT_RWX )
11011104 return - EINVAL ;
11021105
1103- assert_host_shared_guest (vm , ipa , PAGE_SIZE );
1106+ assert_host_shared_guest (vm , ipa , 0 );
11041107 guest_lock_component (vm );
11051108 ret = kvm_pgtable_stage2_relax_perms (& vm -> pgt , ipa , prot , 0 );
11061109 guest_unlock_component (vm );
@@ -1156,7 +1159,7 @@ int __pkvm_host_mkyoung_guest(u64 gfn, struct pkvm_hyp_vcpu *vcpu)
11561159 if (pkvm_hyp_vm_is_protected (vm ))
11571160 return - EPERM ;
11581161
1159- assert_host_shared_guest (vm , ipa , PAGE_SIZE );
1162+ assert_host_shared_guest (vm , ipa , 0 );
11601163 guest_lock_component (vm );
11611164 kvm_pgtable_stage2_mkyoung (& vm -> pgt , ipa , 0 );
11621165 guest_unlock_component (vm );
0 commit comments