From: sashiko-bot@kernel.org
To: "Steffen Eiden" <seiden@linux.ibm.com>
Cc: kvm@vger.kernel.org
Subject: Re: [PATCH v3 22/27] KVM: s390: Add basic arm64 kvm module
Date: Sat, 30 May 2026 08:23:33 +0000 [thread overview]
Message-ID: <20260530082334.113461F00893@smtp.kernel.org> (raw)
In-Reply-To: <20260529155050.2902245-23-seiden@linux.ibm.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Critical] Calling `kvm_init_with_dev()` from a secondary/independent KVM architecture backend (`kvm-s390-arm64`) causes catastrophic double-initialization of the KVM core subsystem, leading to global state corruption and kernel panics.
- [High] Integer underflow in `kvm_max_guest_address()` causes KVM to report an invalid, massively incorrect maximum IPA size on host systems with limited memory.
--
commit cceba4a7a6d94b89a1513f32f00ede5f3c39fa4c
Author: Steffen Eiden <seiden@linux.ibm.com>
KVM: s390: Add basic arm64 kvm module
Add basic code for the new arm64 on s390 KVM implementation.
Add kernel module boilerplate code and trivial functions.
> diff --git a/arch/s390/kvm/arm64/arm.c b/arch/s390/kvm/arm64/arm.c
> new file mode 100644
> index 0000000000000..591e2e874891a
> --- /dev/null
> +++ b/arch/s390/kvm/arm64/arm.c
[ ... ]
> +static u64 kvm_max_guest_address(void)
> +{
> + u64 max_addr;
> +
> + if (sclp.hamax == U64_MAX)
> + max_addr = TASK_SIZE_MAX;
> + else
> + max_addr = min_t(u64, TASK_SIZE_MAX, sclp.hamax);
> + return ALIGN_DOWN(max_addr + 1, 1 << 30) - 1;
[Severity: High]
If the host system has less than 1GB of addressable memory (i.e.,
sclp.hamax < 1GB - 1), will ALIGN_DOWN() evaluate to 0 and cause the
subsequent subtraction of 1 to underflow to U64_MAX?
> +}
[ ... ]
> +u32 get_kvm_ipa_limit(void)
> +{
> + return fls64(kvm_max_guest_address() + 1) - 1;
[Severity: High]
Following the underflow in kvm_max_guest_address(), would this result in
fls64(U64_MAX + 1) - 1?
Since U64_MAX + 1 is 0 and fls64(0) returns 0, this calculates to -1, which
would be cast to 0xFFFFFFFF. Does this inadvertently return an invalid 32-bit
limit of 0xFFFFFFFF to userspace capability checks?
> +}
[ ... ]
> +static int __init kvm_s390_arm64_init(void)
> +{
> + if (!sclp.has_aef)
> + return -ENXIO;
> +
> + return kvm_init_with_dev(sizeof(struct kvm_vcpu), 0, THIS_MODULE,
> + KVM_DEV_NAME, MISC_DYNAMIC_MINOR);
[Severity: Critical]
Since kvm_init_with_dev() is a core KVM function that manipulates global
state, does calling it from a secondary KVM architecture backend cause a
double-initialization if the primary s390 KVM module is already active?
Loading this module while kvm.ko is active appears to invoke
INIT_LIST_HEAD() on a miscdevice already in the list, potentially corrupting
the doubly linked list and causing a panic on traversal.
Could it also allocate a duplicate kvm_vcpu_cache, overwriting the global
pointer and leaking the original cache?
> +}
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260529155050.2902245-1-seiden@linux.ibm.com?part=22
next prev parent reply other threads:[~2026-05-30 8:23 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-29 15:50 [PATCH v3 00/27] KVM: s390: Introduce arm64 KVM Steffen Eiden
2026-05-29 15:50 ` [PATCH v3 01/27] VFIO: take reference to the KVM module Steffen Eiden
2026-05-29 16:49 ` sashiko-bot
2026-05-29 15:50 ` [PATCH v3 02/27] KVM, vfio: remove symbol_get(kvm_get_kvm_safe) from vfio Steffen Eiden
2026-05-29 16:39 ` sashiko-bot
2026-05-29 15:50 ` [PATCH v3 03/27] KVM, vfio: remove symbol_get(kvm_put_kvm) " Steffen Eiden
2026-05-29 17:22 ` sashiko-bot
2026-05-29 15:50 ` [PATCH v3 04/27] uapi: KVM: Provide arm64 UAPI for other host architectures Steffen Eiden
2026-05-29 17:10 ` sashiko-bot
2026-05-29 15:50 ` [PATCH v3 05/27] arm64: Extract sysreg definitions Steffen Eiden
2026-05-29 17:22 ` sashiko-bot
2026-05-29 15:50 ` [PATCH v3 06/27] arm64: Provide arm64 API for non-native architectures Steffen Eiden
2026-05-29 17:41 ` sashiko-bot
2026-05-29 15:50 ` [PATCH v3 07/27] KVM: arm64: Provide arm64 KVM " Steffen Eiden
2026-05-29 17:45 ` sashiko-bot
2026-05-29 15:50 ` [PATCH v3 08/27] arm64: Extract pstate definitions from ptrace Steffen Eiden
2026-05-29 15:50 ` [PATCH v3 09/27] KVM: arm64: Share kvm_emulate definitions Steffen Eiden
2026-05-29 18:13 ` sashiko-bot
2026-05-29 15:50 ` [PATCH v3 10/27] KVM: arm64: Make some arm64 KVM code shareable Steffen Eiden
2026-05-29 19:15 ` sashiko-bot
2026-05-29 15:50 ` [PATCH v3 11/27] KVM: arm64: Access elements of vcpu_gp_regs individually Steffen Eiden
2026-05-29 15:50 ` [PATCH v3 12/27] KVM: arm64: Share reset general register code Steffen Eiden
2026-05-29 15:50 ` [PATCH v3 13/27] KVM: arm64: Extract & share ipa size shift calculation Steffen Eiden
2026-05-29 15:50 ` [PATCH v3 14/27] KVM: s390: Move s390 kvm code into a subdirectory Steffen Eiden
2026-05-30 6:46 ` sashiko-bot
2026-05-29 15:50 ` [PATCH v3 15/27] KVM: S390: Refactor gmap Steffen Eiden
2026-05-30 6:56 ` sashiko-bot
2026-05-29 15:50 ` [PATCH v3 16/27] KVM: Make device name configurable Steffen Eiden
2026-05-30 7:12 ` sashiko-bot
2026-05-29 15:50 ` [PATCH v3 17/27] KVM: Remove KVM_MMIO as config option Steffen Eiden
2026-05-30 7:23 ` sashiko-bot
2026-05-29 15:50 ` [PATCH v3 18/27] KVM: s390: Prepare kvm-s390 for a second kvm module Steffen Eiden
2026-05-29 15:50 ` [PATCH v3 19/27] s390: Introduce Start Arm Execution instruction Steffen Eiden
2026-05-29 15:50 ` [PATCH v3 20/27] KVM: s390: arm64: Introduce host definitions Steffen Eiden
2026-05-30 8:07 ` sashiko-bot
2026-05-29 15:50 ` [PATCH v3 21/27] s390/hwcaps: Report SAE support as hwcap Steffen Eiden
2026-05-29 15:50 ` [PATCH v3 22/27] KVM: s390: Add basic arm64 kvm module Steffen Eiden
2026-05-30 8:23 ` sashiko-bot [this message]
2026-05-29 15:50 ` [PATCH v3 23/27] KVM: s390: arm64: Implement required functions Steffen Eiden
2026-05-29 15:50 ` [PATCH v3 24/27] KVM: s390: arm64: Implement vm/vcpu create destroy Steffen Eiden
2026-05-30 8:57 ` sashiko-bot
2026-05-29 15:50 ` [PATCH v3 25/27] KVM: s390: arm64: Implement vCPU IOCTLs Steffen Eiden
2026-05-30 9:09 ` sashiko-bot
2026-05-29 15:50 ` [PATCH v3 26/27] KVM: s390: arm64: Implement basic page fault handler Steffen Eiden
2026-05-30 9:22 ` sashiko-bot
2026-05-29 15:50 ` [PATCH v3 27/27] KVM: s390: arm64: Enable KVM_ARM64 config and Kbuild Steffen Eiden
2026-05-30 9:37 ` 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=20260530082334.113461F00893@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=kvm@vger.kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
--cc=seiden@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.