From: Vitaly Kuznetsov <vkuznets@redhat.com>
To: Sean Christopherson <seanjc@google.com>,
Paolo Bonzini <pbonzini@redhat.com>
Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
Stefan Teodorescu <fane@google.com>
Subject: Re: [PATCH] KVM: x86: Zero reserved synic flags when delivering message to avoid stack leak
Date: Thu, 27 Aug 2026 09:12:29 +0200 [thread overview]
Message-ID: <874iggnijm.fsf@172.16.32.78> (raw)
In-Reply-To: <20260826184449.814130-1-seanjc@google.com>
Sean Christopherson <seanjc@google.com> writes:
> Ensure all reserved flags are zeroed when setting the msg_pending flag as
> part of SynIC message delivery, as setting only msg_pending can leak seven
> bits of kernel stack data to the guest. E.g. gcc typically uses a
> bitwise-OR to set the msg_pending flag, without initializing the on-stack
> variable.
>
> Precisely zero the flags, e.g. as opposed to zeroing the entire structure,
> to make it somewhat more obvious that the flags *need* to be zeroed. E.g.
> it would be quite easy to misread the initial read of guest memory and
> think that zeroing the entire structure is completely superfluous.
>
> Fixes: 3a0e7731724f ("x86: kvm: hyperv: simplify SynIC message delivery")
> Cc: stable@vger.kernel.org
> Reported-by: Stefan Teodorescu <fane@google.com>
> Signed-off-by: Sean Christopherson <seanjc@google.com>
> ---
> arch/x86/kvm/hyperv.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/arch/x86/kvm/hyperv.c b/arch/x86/kvm/hyperv.c
> index 604651cb2739..8d2669d8ef34 100644
> --- a/arch/x86/kvm/hyperv.c
> +++ b/arch/x86/kvm/hyperv.c
> @@ -802,7 +802,9 @@ static int synic_deliver_msg(struct kvm_vcpu_hv_synic *synic, u32 sint,
> if (no_retry)
> return 0;
>
> + hv_hdr.message_flags.asu8 = 0;
> hv_hdr.message_flags.msg_pending = 1;
> +
> r = kvm_vcpu_write_guest_page(vcpu, msg_page_gfn,
> &hv_hdr.message_flags,
> msg_off +
>
> base-commit: 76671054f9a1ff6abb976583cd8da37650acdc97
Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com>
(although, I kind of like the idea of zeroing the whole structure with a
comment that we don't read it as a whole from guest's memory too)
--
Vitaly
next prev parent reply other threads:[~2026-08-27 7:12 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-26 18:44 [PATCH] KVM: x86: Zero reserved synic flags when delivering message to avoid stack leak Sean Christopherson
2026-08-27 7:12 ` Vitaly Kuznetsov [this message]
2026-08-27 16:09 ` Sean Christopherson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=874iggnijm.fsf@172.16.32.78 \
--to=vkuznets@redhat.com \
--cc=fane@google.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=seanjc@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.