From: sashiko-bot@kernel.org
To: "Christoph Schlameuss" <schlameuss@linux.ibm.com>
Cc: "Vasily Gorbik" <gor@linux.ibm.com>,
kvm@vger.kernel.org, linux-s390@vger.kernel.org,
"Heiko Carstens" <hca@linux.ibm.com>,
"Alexander Gordeev" <agordeev@linux.ibm.com>
Subject: Re: [PATCH 15/21] KVM: s390: vsie: Add struct vsie_sca with pin and unpin
Date: Thu, 09 Jul 2026 15:31:35 +0000 [thread overview]
Message-ID: <20260709153135.9C1221F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260709-vsie-sigpi-v1-15-ea9f12066408@linux.ibm.com>
Thank you for your contribution! Sashiko AI review found 5 potential issue(s) to consider:
- [High] Guest-triggerable WARN_ON_ONCE and negative error code truncation in pin_sca().
- [High] Unconditional pinning of 5 pages for ESCA breaks valid guest configurations due to over-pinning.
- [High] The dynamically allocated `struct vsie_sca` leaves its embedded `mutex` and `ref_count` uninitialized.
- [High] Missing NULL pointer check in `free_vsie_sca` can crash the kernel on error paths.
- [Low] Unused static functions trigger compiler warnings and break builds with `-Werror`.
--
--- Patch [15]: [PATCH 15/21] KVM: s390: vsie: Add struct vsie_sca with pin and unpin ---
commit e9a459801d0d13c2945b7f63700e761f8e46bb25
Author: Christoph Schlameuss <schlameuss@linux.ibm.com>
KVM: s390: vsie: Add struct vsie_sca with pin and unpin
Introduce the struct vsie_sca to hold the SSCA and required management
data along with alloc and free methods to use with the struct.
> --- a/arch/s390/kvm/vsie.c
> +++ b/arch/s390/kvm/vsie.c
[ ... ]
> @@ -831,6 +854,60 @@ static int pin_scb(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page,
[ ... ]
> +static int pin_sca(struct kvm *kvm, struct vsie_sca *vsie_sca)
> +{
> + bool is_esca = test_bit(VSIE_SCA_ESCA, &vsie_sca->flags);
> + int nr_pages = KVM_S390_MAX_SCA_PAGES;
[Severity: High]
Will this unconditionally pin 5 pages for ESCA blocks, even if the
16,128-byte block only spans 4 pages depending on its alignment?
If a nested guest allocates an ESCA block adjacent to unbacked memory,
could pin_guest_pages() attempt to pin a 5th unbacked page and fail
with -EFAULT, incorrectly rejecting a valid guest configuration?
> +
> + if (test_bit(VSIE_SCA_PINNED, &vsie_sca->flags))
> + return 0;
> +
> + if (!is_esca) {
> + nr_pages = 1;
> + if ((vsie_sca->sca_gpa & ~PAGE_MASK) + sizeof(struct bsca_block) > PAGE_SIZE)
> + nr_pages = 2;
> + }
> +
> + vsie_sca->sca_o_nr_pages = pin_guest_pages(kvm, vsie_sca->sca_gpa, nr_pages,
> + vsie_sca->sca_o_pages);
> + if (WARN_ON_ONCE(vsie_sca->sca_o_nr_pages != nr_pages))
[Severity: High]
If the guest provides an invalid physical address for sca_gpa,
pin_guest_pages() will legitimately fail and return -EFAULT.
Because sca_o_nr_pages is an unsigned long, will this negative error
code be implicitly cast to a huge positive number?
This would cause the WARN_ON_ONCE() to evaluate to true. Does this allow
a malicious guest to intentionally trigger a host kernel warning,
leading to a denial of service if panic_on_warn is enabled?
> + return -EIO;
> + __set_bit(VSIE_SCA_PINNED, &vsie_sca->flags);
> +
> + return 0;
> +}
> +
> +static void free_vsie_sca(struct kvm *kvm, struct vsie_sca *vsie_sca)
> +{
> + free_pages_exact(vsie_sca, sizeof(*vsie_sca));
[Severity: High]
Is it possible for free_vsie_sca() to be called with a NULL pointer
during error cleanup?
Unlike kfree(), free_pages_exact() is not NULL-safe for allocations larger
than PAGE_SIZE. Since struct vsie_sca is roughly 10.5 KB, free_pages_exact()
will attempt to free invalid low-memory addresses starting at 4096 on its
second iteration, which would crash the kernel.
> +}
> +
> +static struct vsie_sca *alloc_vsie_sca(void)
> +{
> + return alloc_pages_exact(sizeof(struct vsie_sca), GFP_KERNEL_ACCOUNT | __GFP_ZERO);
[Severity: High]
Does relying solely on __GFP_ZERO leave the embedded mutex and ref_count
uninitialized?
Locking a zero-filled mutex is a structural defect that triggers lockdep
splats or kernel panics because its internal spinlock and wait queues
are not initialized. Should this function call mutex_init() and
atomic_set() before returning the allocated structure?
[Severity: Low]
This patch introduces alloc_vsie_sca(), free_vsie_sca(), pin_sca(), and
unpin_sca() as static functions, but they don't appear to be invoked
anywhere in this file.
Could this trigger -Wunused-function compiler warnings and break builds
that compile with -Werror?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260709-vsie-sigpi-v1-0-ea9f12066408@linux.ibm.com?part=15
next prev parent reply other threads:[~2026-07-09 15:31 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-09 15:15 [PATCH 00/21] KVM: s390: vsie: Add VSIE SIGP Interpretation (vsie_sigpi) Christoph Schlameuss
2026-07-09 15:15 ` [PATCH 01/21] KVM: s390: Remove double 64bscao feature check Christoph Schlameuss
2026-07-09 15:15 ` [PATCH 02/21] KVM: s390: vsie: Remove duplicate assertion Christoph Schlameuss
2026-07-09 15:15 ` [PATCH 03/21] KVM: s390: vsie: Convert shift to phys_to_pfn() Christoph Schlameuss
2026-07-09 15:15 ` [PATCH 04/21] KVM: s390: vsie: Add SCAO read and write helpers Christoph Schlameuss
2026-07-09 15:24 ` sashiko-bot
2026-07-09 15:15 ` [PATCH 05/21] KVM: s390: vsie: Move SCAO validation into a function Christoph Schlameuss
2026-07-09 15:26 ` sashiko-bot
2026-07-09 15:15 ` [PATCH 06/21] KVM: s390: vsie: Add vsie_sigpif detection Christoph Schlameuss
2026-07-09 15:32 ` sashiko-bot
2026-07-09 15:15 ` [PATCH 07/21] KVM: s390: vsie: Add ssca_block and ssca_entry structs for vsie_ie Christoph Schlameuss
2026-07-09 15:24 ` sashiko-bot
2026-07-09 15:15 ` [PATCH 08/21] KVM: s390: vsie: Move pin/unpin_scb methods Christoph Schlameuss
2026-07-09 15:15 ` [PATCH 09/21] KVM: s390: vsie: Move pin/unpin guest page Christoph Schlameuss
2026-07-09 15:15 ` [PATCH 10/21] KVM: s390: vsie: Move release/acquire gmap shadow Christoph Schlameuss
2026-07-09 15:15 ` [PATCH 11/21] KVM: s390: vsie: Create helpers to alloc and free vsie_pages Christoph Schlameuss
2026-07-09 15:23 ` sashiko-bot
2026-07-09 15:15 ` [PATCH 12/21] KVM: s390: vsie: Replace radix_tree with xarray addr_to_page Christoph Schlameuss
2026-07-09 15:25 ` sashiko-bot
2026-07-09 15:15 ` [PATCH 13/21] KVM: s390: vsie: Add helper to pin multiple guest pages Christoph Schlameuss
2026-07-09 15:28 ` sashiko-bot
2026-07-09 15:15 ` [PATCH 14/21] KVM: s390: vsie: Add helper to release gmap shadow Christoph Schlameuss
2026-07-09 15:30 ` sashiko-bot
2026-07-09 15:15 ` [PATCH 15/21] KVM: s390: vsie: Add struct vsie_sca with pin and unpin Christoph Schlameuss
2026-07-09 15:31 ` sashiko-bot [this message]
2026-07-09 15:15 ` [PATCH 16/21] KVM: s390: vsie: Shadow VSIE SCA in guest-1 Christoph Schlameuss
2026-07-09 15:37 ` sashiko-bot
2026-07-09 15:15 ` [PATCH 17/21] KVM: s390: vsie: Allow guest-3 cpu add and remove with vsie sigpif Christoph Schlameuss
2026-07-09 15:35 ` sashiko-bot
2026-07-09 15:15 ` [PATCH 18/21] KVM: s390: vsie: Add VSIE max shadow configuration Christoph Schlameuss
2026-07-09 15:35 ` sashiko-bot
2026-07-09 15:15 ` [PATCH 19/21] KVM: s390: vsie: Add VSIE shadow stat counters Christoph Schlameuss
2026-07-09 15:30 ` sashiko-bot
2026-07-09 15:15 ` [PATCH 20/21] KVM: s390: vsie: Create minimal scb shadows for not running g3 blocks Christoph Schlameuss
2026-07-09 15:47 ` sashiko-bot
2026-07-09 15:15 ` [PATCH 21/21] KVM: s390: vsie: Enable VSIE SIGPI Christoph Schlameuss
2026-07-09 15:44 ` sashiko-bot
2026-07-14 14:49 ` [PATCH 00/21] KVM: s390: vsie: Add VSIE SIGP Interpretation (vsie_sigpi) Janosch Frank
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=20260709153135.9C1221F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=agordeev@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.