From: Yousef Alhouseen <[email protected]> Sent: Wednesday, June 24, 
2026 10:57 AM
> Subject: [PATCH] hyperv: mshv: zero VTL hypercall input page
> 

Same comment here about the patch "Subject:" prefix.

> mshv_vtl_hvcall_call() copies only the user-provided input size.
> 
> It then passes the page to hv_do_hypercall().
> 
> For short inputs, stale bytes can remain in the bounce page.
> 
> Those bytes can be consumed by the hypervisor.

It's unclear to me that there's really a problem here. In a
CoCo VM, the host hypervisor isn't trusted, so hypercall sites
must be careful to only expose intended data in the hypercall
input and output pages. But this code already doesn't support
CoCo VMs, as noted in the comment. So in the supported
scenario, the hypervisor has access to all of guest memory. Passing
stale bytes to the hypervisor vs. passing zeros really wouldn't matter.
And user space can already pass stale/garbage bytes to the hypervisor
if it wants to. This code doesn't try to validate the input data for
whatever hypercall user space is requesting to be made.

When support for CoCo VMs is added, this code will indeed
need to make sure not to allow garbage kernel data in the
hypercall input or output pages. But decrypting the pages
so the hypervisor can access them should take care of that
issue.

Michael

> 
> Allocate the input page zeroed, matching the output page.
> 
> Signed-off-by: Yousef Alhouseen <[email protected]>
> ---
>  drivers/hv/mshv_vtl_main.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/hv/mshv_vtl_main.c b/drivers/hv/mshv_vtl_main.c
> index 0365d207c..f2633148c 100644
> --- a/drivers/hv/mshv_vtl_main.c
> +++ b/drivers/hv/mshv_vtl_main.c
> @@ -1146,7 +1146,7 @@ static int mshv_vtl_hvcall_call(struct 
> mshv_vtl_hvcall_fd *fd,
>        *
>        * TODO: Take care of this when CVM support is added.
>        */
> -     in = (void *)__get_free_page(GFP_KERNEL);
> +     in = (void *)__get_free_page(GFP_KERNEL | __GFP_ZERO);
>       out = (void *)__get_free_page(GFP_KERNEL | __GFP_ZERO);
>       if (!in || !out) {
>               ret = -ENOMEM;
> --
> 2.54.0
> 


Reply via email to