Re: [PATCH v2 4/6] KVM: arm64: Limit length in kvm_vm_ioctl_mte_copy_tags() to INT_MAX

From: Cornelia Huck
Date: Wed Feb 08 2023 - 10:04:32 EST


On Wed, Feb 08 2023, Thomas Huth <thuth@xxxxxxxxxx> wrote:

> In case of success, this function returns the amount of handled bytes.
> However, this does not work for large values: The function is called
> from kvm_arch_vm_ioctl() (which still returns a long), which in turn
> is called from kvm_vm_ioctl() in virt/kvm/kvm_main.c. And that function
> stores the return value in an "int r" variable. So the upper 32-bits
> of the "long" return value are lost there.
>
> KVM ioctl functions should only return "int" values, so let's limit
> the amount of bytes that can be requested here to INT_MAX to avoid
> the problem with the truncated return value. We can then also change
> the return type of the function to "int" to make it clearer that it
> is not possible to return a "long" here.
>
> Fixes: f0376edb1ddc ("KVM: arm64: Add ioctl to fetch/store tags in a guest")
> Signed-off-by: Thomas Huth <thuth@xxxxxxxxxx>
> ---
> Documentation/virt/kvm/api.rst | 3 ++-
> arch/arm64/include/asm/kvm_host.h | 4 ++--
> arch/arm64/kvm/guest.c | 8 ++++++--
> 3 files changed, 10 insertions(+), 5 deletions(-)

Reviewed-by: Cornelia Huck <cohuck@xxxxxxxxxx>