Kernel KVM virtualization development
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Christoph Schlameuss" <schlameuss@linux.ibm.com>
Cc: "Heiko Carstens" <hca@linux.ibm.com>,
	linux-s390@vger.kernel.org, kvm@vger.kernel.org,
	"Alexander Gordeev" <agordeev@linux.ibm.com>,
	"Vasily Gorbik" <gor@linux.ibm.com>,
	"Christian Borntraeger" <borntraeger@linux.ibm.com>
Subject: Re: [PATCH v5 20/21] KVM: s390: vsie: Create minimal scb shadows for not running g3 blocks
Date: Wed, 26 Aug 2026 15:35:15 +0000	[thread overview]
Message-ID: <20260826153515.C7B3E1F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260826-vsie-sigpi-v5-20-cf471edb46b2@linux.ibm.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Critical] Hardware SIGPI execution can read a partially zeroed `scb_s` structure while KVM is executing `memset` on it, leading to host memory corruption via wild physical address writes.
--

commit 6a6b22a554f022a2f999c91a98c908cfacf9ce2d
Author: Christoph Schlameuss <schlameuss@linux.ibm.com>

KVM: s390: vsie: Create minimal scb shadows for not running g3 blocks

This commit introduces a minimal shadow of the vSIE control block for
guest-3 blocks that are not currently running. The minimal shadow only
contains the information needed for SIGPI and SRSI and is recreated fully
when a vSIE is entered with that SCB later.

[ ... ]

> diff --git a/arch/s390/kvm/s390/vsie.c b/arch/s390/kvm/s390/vsie.c
> index 335ed1a927aa6..86ccd92233b5c 100644
> --- a/arch/s390/kvm/s390/vsie.c
> +++ b/arch/s390/kvm/s390/vsie.c

[ ... ]

> @@ -2166,7 +2186,7 @@ static int _shadow_sca_cpu(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page,
>  	if (IS_ERR(vsie_page_n))
>  		return PTR_ERR(vsie_page_n);
>  
> -	rc = shadow_scb(vcpu, vsie_page_n);
> +	rc = shadow_scb_minimal(vcpu, vsie_page_n);

[Severity: Critical]
Can this lead to host memory corruption if a malicious guest-2 changes the
SDA (scb_gpa) for a nested vCPU in its SCA while another guest-2 vCPU is
actively running sie for the same VM?

When guest-2 enters sie for the modified vCPU, KVM's get_vsie_page_cpu_nr()
call just above this block unpins the old SCB and clears the shadow SCB:

arch/s390/kvm/s390/vsie.c:reset_vsie_page() {
    ...
    memset(&vsie_page->scb_s, 0, sizeof(struct kvm_s390_sie_block));
    ...
}

Does this memset execute while the other hardware thread is actively allowed
to follow the ssda pointer to it?

If osda is zeroed while hardware SIGPI execution reads this partially
zeroed scb_s structure, it appears hardware could write to absolute
physical address 0 (or a freed host page), causing host memory corruption.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260826-vsie-sigpi-v5-0-cf471edb46b2@linux.ibm.com?part=20

  reply	other threads:[~2026-08-26 15:35 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-26 15:05 [PATCH v5 00/21] KVM: s390: vsie: Add VSIE SIGP ECALL and SRSI Interpretation Christoph Schlameuss
2026-08-26 15:05 ` [PATCH v5 01/21] KVM: s390: vsie: Add SCAO read and write helpers Christoph Schlameuss
2026-08-26 15:12   ` sashiko-bot
2026-08-26 15:05 ` [PATCH v5 02/21] KVM: s390: vsie: Move SCAO validation into a function Christoph Schlameuss
2026-08-26 15:15   ` sashiko-bot
2026-08-26 15:05 ` [PATCH v5 03/21] KVM: s390: vsie: Add vsie_interp_extf detection Christoph Schlameuss
2026-08-26 15:12   ` sashiko-bot
2026-08-26 15:05 ` [PATCH v5 04/21] KVM: s390: vsie: Add ssca_block and ssca_entry structs Christoph Schlameuss
2026-08-26 15:09   ` sashiko-bot
2026-08-26 15:05 ` [PATCH v5 05/21] KVM: s390: vsie: Move pin/unpin guest page Christoph Schlameuss
2026-08-26 15:17   ` sashiko-bot
2026-08-26 15:05 ` [PATCH v5 06/21] KVM: s390: vsie: Move pin/unpin_scb methods Christoph Schlameuss
2026-08-26 15:10   ` sashiko-bot
2026-08-26 15:05 ` [PATCH v5 07/21] KVM: s390: vsie: Move release/acquire gmap shadow Christoph Schlameuss
2026-08-26 15:14   ` sashiko-bot
2026-08-26 15:05 ` [PATCH v5 08/21] KVM: s390: vsie: Create helpers to alloc and free vsie_pages Christoph Schlameuss
2026-08-26 15:10   ` sashiko-bot
2026-08-26 15:05 ` [PATCH v5 09/21] KVM: s390: vsie: Replace radix_tree with xarray addr_to_page Christoph Schlameuss
2026-08-26 15:14   ` sashiko-bot
2026-08-26 15:05 ` [PATCH v5 10/21] KVM: s390: vsie: Refactor kvm_s390_vsie_destroy and extract reusable methods Christoph Schlameuss
2026-08-26 15:19   ` sashiko-bot
2026-08-26 15:05 ` [PATCH v5 11/21] KVM: s390: vsie: Add helper reset_vsie_page() and unshadow_intercept() Christoph Schlameuss
2026-08-26 15:18   ` sashiko-bot
2026-08-26 15:05 ` [PATCH v5 12/21] KVM: s390: vsie: Add helper unshadow_intercept() Christoph Schlameuss
2026-08-26 15:14   ` sashiko-bot
2026-08-26 15:05 ` [PATCH v5 13/21] KVM: s390: vsie: Lazily keep original scb pinned after vsie exit Christoph Schlameuss
2026-08-26 15:25   ` sashiko-bot
2026-08-26 15:05 ` [PATCH v5 14/21] KVM: s390: vsie: Add helper to pin and unpin multiple guest pages Christoph Schlameuss
2026-08-26 15:15   ` sashiko-bot
2026-08-26 15:05 ` [PATCH v5 15/21] KVM: s390: vsie: Add struct vsie_sca with pin and unpin methods Christoph Schlameuss
2026-08-26 15:26   ` sashiko-bot
2026-08-26 15:05 ` [PATCH v5 16/21] KVM: s390: vsie: Shadow VSIE SCA in guest-1 Christoph Schlameuss
2026-08-26 15:25   ` sashiko-bot
2026-08-26 15:05 ` [PATCH v5 17/21] KVM: s390: vsie: Allow guest-3 cpu add and remove with ssca Christoph Schlameuss
2026-08-26 15:23   ` sashiko-bot
2026-08-26 15:05 ` [PATCH v5 18/21] KVM: s390: vsie: Add VSIE max shadow configuration Christoph Schlameuss
2026-08-26 15:24   ` sashiko-bot
2026-08-26 15:05 ` [PATCH v5 19/21] KVM: s390: vsie: Add VSIE shadow stat counters Christoph Schlameuss
2026-08-26 15:19   ` sashiko-bot
2026-08-26 15:05 ` [PATCH v5 20/21] KVM: s390: vsie: Create minimal scb shadows for not running g3 blocks Christoph Schlameuss
2026-08-26 15:35   ` sashiko-bot [this message]
2026-08-26 15:05 ` [PATCH v5 21/21] KVM: s390: vsie: Enable use of VSIE SSCA Christoph Schlameuss
2026-08-26 15:33   ` sashiko-bot

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=20260826153515.C7B3E1F000E9@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=agordeev@linux.ibm.com \
    --cc=borntraeger@linux.ibm.com \
    --cc=gor@linux.ibm.com \
    --cc=hca@linux.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=schlameuss@linux.ibm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox