From: sashiko-bot@kernel.org
To: "Marco Elver" <elver@google.com>
Cc: kvm@vger.kernel.org
Subject: Re: [PATCH RFC 09/10] KVM: x86: Add guarded_by annotations for kvm_arch, kvm_hv, and ioapic
Date: Thu, 10 Sep 2026 16:46:11 +0000 [thread overview]
Message-ID: <20260910164611.8A61E1F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20260910162343.4092060-10-elver@google.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
New issues:
- [Low] Mixing goto-based error handling and scope-based cleanup in the same function.
Pre-existing issues:
- [High] Lockless traversal of the global vm_list can race with VM creation and destruction.
--
commit b3fea266e46bae40374748855ac1c207f8a8f74f
Author: Marco Elver <elver@google.com>
KVM: x86: Add guarded_by annotations for kvm_arch, kvm_hv, and ioapic
Add __guarded_by annotations to a subset of fields across x86 state
(struct kvm_hv, struct kvm_arch, and struct kvm_ioapic) where the
protecting locks reside in the same struct scope. Mark deliberate
lockless updates with data_race().
> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
> index de7c6eb1a64f5..af03911f0c4fa 100644
> --- a/arch/x86/kvm/x86.c
> +++ b/arch/x86/kvm/x86.c
> @@ -9813,8 +9813,8 @@ int kvm_arch_enable_virtualization_cpu(void)
> * you may have some problem. Solving this issue is
> * left as an exercise to the reader.
> */
> - kvm->arch.last_tsc_nsec = 0;
> - kvm->arch.last_tsc_write = 0;
> + data_race(kvm->arch.last_tsc_nsec = 0);
> + data_race(kvm->arch.last_tsc_write = 0);
[Severity: High]
This isn't a bug introduced by this patch, but does this lockless traversal of
the global vm_list in kvm_arch_enable_virtualization_cpu() race with VM
creation and destruction?
If a user concurrently creates a VM (kvm_create_vm) or destroys a VM
(kvm_destroy_vm) while CPU hotplug is running via kvm_online_cpu(), the
list_add() or list_del() executed under kvm_lock will race with this traversal.
This can potentially lead to list corruption, use-after-free, or infinite
loops.
While this patch masks static analyzer warnings by adding data_race()
annotations here, shouldn't the broader list traversal safety be addressed?
[ ... ]
> @@ -9927,8 +9927,8 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
> kvm->arch.enable_pmu = enable_pmu && !kvm->arch.has_protected_pmu;
>
> #if IS_ENABLED(CONFIG_HYPERV)
> - spin_lock_init(&kvm->arch.hv_root_tdp_lock);
> - kvm->arch.hv_root_tdp = INVALID_PAGE;
> + scoped_guard(spinlock_init, &kvm->arch.hv_root_tdp_lock)
> + kvm->arch.hv_root_tdp = INVALID_PAGE;
[Severity: Low]
Does introducing scoped_guard() here mix scope-based cleanup with goto-based
error handling in the same function?
kvm_arch_init_vm() already relies on goto labels (e.g., goto out_uninit_mmu,
goto out_cleanup_page_track) for its error paths. According to the subsystem
coding standards, a function must exclusively use either goto-based cleanup or
scope-based cleanup helpers, but never mix both to prevent confusing ownership
semantics and lifecycle bugs.
Could this be kept as goto-based, or should the entire function be converted
to scope-based cleanup?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260910162343.4092060-1-elver@google.com?part=9
next prev parent reply other threads:[~2026-09-10 16:46 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-10 16:21 [PATCH RFC 00/10] KVM: Enable Clang Context Analysis Marco Elver
2026-09-10 16:21 ` [PATCH RFC 01/10] KVM: x86/pmu: Acquire SRCU in pmc_is_event_allowed() to protect filter lookup Marco Elver
2026-09-10 16:46 ` Sean Christopherson
2026-09-10 16:21 ` [PATCH RFC 02/10] KVM: Allow reading memslots while holding slots_arch_lock Marco Elver
2026-09-10 16:30 ` Sean Christopherson
2026-09-10 17:11 ` Marco Elver
2026-09-10 17:52 ` Sean Christopherson
2026-09-10 19:05 ` Marco Elver
2026-09-10 16:39 ` sashiko-bot
2026-09-10 16:21 ` [PATCH RFC 03/10] KVM: guest_memfd: Avoid conditional mmu_lock acquisition Marco Elver
2026-09-10 16:42 ` sashiko-bot
2026-09-10 16:21 ` [PATCH RFC 04/10] KVM: Refactor kvm_handle_hva_range() to avoid conditional mmu_lock Marco Elver
2026-09-10 16:38 ` Sean Christopherson
2026-09-10 16:21 ` [PATCH RFC 05/10] KVM: Refactor kvm_handle_gfn_range() " Marco Elver
2026-09-10 16:21 ` [PATCH RFC 06/10] KVM: Add basic lock context annotations Marco Elver
2026-09-10 16:34 ` sashiko-bot
2026-09-10 16:53 ` Marco Elver
2026-09-10 16:21 ` [PATCH RFC 07/10] KVM: x86: " Marco Elver
2026-09-10 16:21 ` [PATCH RFC 08/10] KVM: Add guarded_by to members in struct kvm Marco Elver
2026-09-10 16:21 ` [PATCH RFC 09/10] KVM: x86: Add guarded_by annotations for kvm_arch, kvm_hv, and ioapic Marco Elver
2026-09-10 16:46 ` sashiko-bot [this message]
2026-09-10 16:21 ` [PATCH RFC 10/10] KVM: x86: Enable CONTEXT_ANALYSIS with opt-outs Marco Elver
2026-09-10 16:55 ` [PATCH RFC 00/10] KVM: Enable Clang Context Analysis Sean Christopherson
2026-09-10 19:19 ` Marco Elver
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=20260910164611.8A61E1F000FF@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=elver@google.com \
--cc=kvm@vger.kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
/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