From: sashiko-bot@kernel.org
To: "Christoph Schlameuss" <schlameuss@linux.ibm.com>
Cc: linux-s390@vger.kernel.org, "Vasily Gorbik" <gor@linux.ibm.com>,
"Alexander Gordeev" <agordeev@linux.ibm.com>,
"Christian Borntraeger" <borntraeger@linux.ibm.com>,
kvm@vger.kernel.org, "Heiko Carstens" <hca@linux.ibm.com>
Subject: Re: [PATCH v7 20/21] KVM: s390: vsie: Create minimal scb shadows for not running g3 blocks
Date: Fri, 18 Sep 2026 15:50:49 +0000 [thread overview]
Message-ID: <20260918155050.11C9B1F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20260918-vsie-sigpi-v7-20-f39806eaae37@linux.ibm.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] kvm: s390: vsie: host DoS via unbacked nested SCA address
- [Medium] kvm: s390: vsie: missing hpid and cpnc in minimal shadow SCB breaks SIGPI
--
commit feee29bf065106ccfaff09da7c439bae1d45d3eb
Author: Christoph Schlameuss <schlameuss@linux.ibm.com>
Subject: KVM: s390: vsie: Create minimal scb shadows for not running g3 blocks
This commit optimizes the shadowing of vSIE control blocks by creating a
minimal shadow for non-running guest-3 blocks instead of a full shadow. The
minimal shadow is designed to only contain information necessary for SIGPI and
SRSI, reducing the overhead of shadowing the entire guest-3 configuration.
> diff --git a/arch/s390/kvm/s390/vsie.c b/arch/s390/kvm/s390/vsie.c
> index 59037964efc9e..c99cc03ecb81d 100644
> --- a/arch/s390/kvm/s390/vsie.c
> +++ b/arch/s390/kvm/s390/vsie.c
[ ... ]
> @@ -722,6 +721,39 @@ static void unshadow_scb(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
> scb_o->ihcpu = scb_s->ihcpu;
> }
>
> +static int shadow_scb_minimal(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
> +{
> + struct kvm_s390_sie_block *scb_s = &vsie_page->scb_s;
> + struct kvm_s390_sie_block *scb_o = vsie_page->scb_o;
> + int rc;
> +
> + /* make sure we don't have any leftovers when reusing the scb */
> + scb_s->icptcode = 0;
> + scb_s->eca = 0;
> + scb_s->ecb = 0;
> + scb_s->ecb2 = 0;
> + scb_s->ecb3 = 0;
> + scb_s->ecd = 0;
> + scb_s->fac = 0;
> + scb_s->fpf = 0;
> +
> + rc = prepare_cpuflags(vcpu, vsie_page);
[Severity: Medium]
Does this zeroing sequence miss carrying over the HPID and CPNC values?
Unlike the full shadow_scb(), shadow_scb_minimal() does not seem to set
scb_s->hpid = HPID_VSIE or copy scb_o->cpnc to scb_s->cpnc. Without the
correct HPID (0x5) initialized in the minimal shadow SCB, will hardware SIGP
Interpretation (SIGPI) fail or incorrectly intercept for non-running guest-3
CPUs?
The hardware SIGPI mechanism requires the sender's HPID to match the target
SCB's HPID.
[Severity: High]
Can an L2 guest setting an unbacked nested SCA address cause a host DoS?
Looking at get_vsie_sca() and kvm_s390_handle_vsie() in
arch/s390/kvm/s390/vsie.c, if a malicious L2 guest sets sca_gpa in its SCB
to an invalid or unbacked guest physical address, pin_sca() fails and
returns -EINVAL:
arch/s390/kvm/s390/vsie.c:get_vsie_sca() {
...
rc = pin_sca(kvm, vsie_sca);
if (rc) {
put_vsie_sca(vsie_sca);
vsie_sca->sca_gpa = ULONG_MAX;
goto out;
}
...
}
This unhandled -EINVAL is then propagated unmodified through
get_vsie_sca() and returned by kvm_s390_handle_vsie() out of the instruction
handler, instead of injecting a validity intercept:
arch/s390/kvm/s390/vsie.c:kvm_s390_handle_vsie() {
...
out_unpin:
unpin_guest_page(vcpu->kvm, scb_addr, scb_hpa);
if (rc == -EAGAIN) {
kvm_s390_rewind_psw(vcpu, 4);
rc = 0;
}
return rc < 0 ? rc : 0;
}
Does this bypass the -EAGAIN check and bubble up to the KVM core, crashing
the host userspace process (e.g., QEMU) and bringing down the entire L1 VM?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260918-vsie-sigpi-v7-0-f39806eaae37@linux.ibm.com?part=20
next prev parent reply other threads:[~2026-09-18 15:50 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-18 15:09 [PATCH v7 00/21] KVM: s390: vsie: Add VSIE SIGP ECALL and SRSI Interpretation Christoph Schlameuss
2026-09-18 15:09 ` [PATCH v7 01/21] KVM: s390: vsie: Add SCAO read and write helpers Christoph Schlameuss
2026-09-18 15:14 ` sashiko-bot
2026-09-18 15:09 ` [PATCH v7 02/21] KVM: s390: vsie: Move SCAO validation into a function Christoph Schlameuss
2026-09-18 15:24 ` sashiko-bot
2026-09-18 15:09 ` [PATCH v7 03/21] KVM: s390: vsie: Add vsie_interp_extf detection Christoph Schlameuss
2026-09-18 15:15 ` sashiko-bot
2026-09-18 15:09 ` [PATCH v7 04/21] KVM: s390: vsie: Add ssca_block and ssca_entry structs Christoph Schlameuss
2026-09-18 15:14 ` sashiko-bot
2026-09-18 15:09 ` [PATCH v7 05/21] KVM: s390: vsie: Move pin/unpin guest page Christoph Schlameuss
2026-09-18 15:16 ` sashiko-bot
2026-09-18 15:09 ` [PATCH v7 06/21] KVM: s390: vsie: Move pin/unpin_scb methods Christoph Schlameuss
2026-09-18 15:24 ` sashiko-bot
2026-09-18 15:09 ` [PATCH v7 07/21] KVM: s390: vsie: Move release/acquire gmap shadow Christoph Schlameuss
2026-09-18 15:16 ` sashiko-bot
2026-09-18 15:09 ` [PATCH v7 08/21] KVM: s390: vsie: Create helpers to alloc and free vsie_pages Christoph Schlameuss
2026-09-18 15:19 ` sashiko-bot
2026-09-23 11:54 ` Janosch Frank
2026-09-24 11:32 ` Christoph Schlameuss
2026-09-18 15:09 ` [PATCH v7 09/21] KVM: s390: vsie: Replace radix_tree with xarray addr_to_page Christoph Schlameuss
2026-09-18 15:25 ` sashiko-bot
2026-09-23 12:40 ` Janosch Frank
2026-09-18 15:09 ` [PATCH v7 10/21] KVM: s390: vsie: Refactor kvm_s390_vsie_destroy and extract reusable methods Christoph Schlameuss
2026-09-18 15:22 ` sashiko-bot
2026-09-23 12:56 ` Janosch Frank
2026-09-18 15:09 ` [PATCH v7 11/21] KVM: s390: vsie: Add helper reset_vsie_page() and unshadow_intercept() Christoph Schlameuss
2026-09-18 15:25 ` sashiko-bot
2026-09-23 12:58 ` Janosch Frank
2026-09-18 15:09 ` [PATCH v7 12/21] KVM: s390: vsie: Add helper unshadow_intercept() Christoph Schlameuss
2026-09-18 15:27 ` sashiko-bot
2026-09-23 14:04 ` Janosch Frank
2026-09-18 15:09 ` [PATCH v7 13/21] KVM: s390: vsie: Lazily keep original scb pinned after vsie exit Christoph Schlameuss
2026-09-18 15:34 ` sashiko-bot
2026-09-18 15:09 ` [PATCH v7 14/21] KVM: s390: vsie: Add helper to pin and unpin multiple guest pages Christoph Schlameuss
2026-09-18 15:31 ` sashiko-bot
2026-09-24 12:46 ` Janosch Frank
2026-09-18 15:09 ` [PATCH v7 15/21] KVM: s390: vsie: Add struct vsie_sca with pin and unpin methods Christoph Schlameuss
2026-09-18 15:33 ` sashiko-bot
2026-09-18 15:09 ` [PATCH v7 16/21] KVM: s390: vsie: Shadow VSIE SCA in guest-1 Christoph Schlameuss
2026-09-18 15:41 ` sashiko-bot
2026-09-18 15:09 ` [PATCH v7 17/21] KVM: s390: vsie: Allow guest-3 cpu add and remove with ssca Christoph Schlameuss
2026-09-18 15:41 ` sashiko-bot
2026-09-18 15:09 ` [PATCH v7 18/21] KVM: s390: vsie: Add VSIE max shadow configuration Christoph Schlameuss
2026-09-18 15:45 ` sashiko-bot
2026-09-18 15:09 ` [PATCH v7 19/21] KVM: s390: vsie: Add VSIE shadow stat counters Christoph Schlameuss
2026-09-18 15:39 ` sashiko-bot
2026-09-18 15:09 ` [PATCH v7 20/21] KVM: s390: vsie: Create minimal scb shadows for not running g3 blocks Christoph Schlameuss
2026-09-18 15:50 ` sashiko-bot [this message]
2026-09-18 15:09 ` [PATCH v7 21/21] KVM: s390: vsie: Enable use of VSIE SSCA Christoph Schlameuss
2026-09-18 15:53 ` 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=20260918155050.11C9B1F000FF@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 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.