[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250827194107.4142164-1-seanjc@google.com>
Date: Wed, 27 Aug 2025 12:41:04 -0700
From: Sean Christopherson <seanjc@...gle.com>
To: Sean Christopherson <seanjc@...gle.com>, Paolo Bonzini <pbonzini@...hat.com>,
"Michael S. Tsirkin" <mst@...hat.com>, Jason Wang <jasowang@...hat.com>
Cc: kvm@...r.kernel.org, virtualization@...ts.linux.dev,
netdev@...r.kernel.org, linux-kernel@...r.kernel.org,
Sebastian Andrzej Siewior <bigeasy@...utronix.de>
Subject: [PATCH v2 0/3] vhost_task: Fix a bug where KVM wakes an exited task
Michael,
Do you want to take this through the vhost tree? It technically fixes a KVM
bug, but this obviously touches far more vhost code than KVM code, and the
patch that needs to go into 6.17 doesn't touch KVM at all.
Fix a bug where KVM attempts to wake a vhost task that has already exited in
response to a fatal signal, and tack on a few cleanups to harden against
introducing similar bugs in the future.
The issue is firmly a KVM problem, but I opted to fix the bug by making
vhost_task_wake() safe against an exited task as doing so is far simpler and
cleaner than implementing the same functionality in KVM, and I suspect that
if there are other users of vhost_tasks in the future, then there's a good
chance they will want/expect vhost_task to handle that detail.
Note, this only started causing problems when commit 56180dd20c19 ("futex:
Use RCU-based per-CPU reference counting instead of rcuref_t") landed, so
the explosions are "new" in 6.17, but the bug has existed since KVM switched
to vhost_task back in 6.13.
v2:
- Drop the "safe" postfix variant and make the "default" vhost_task_wake()
safe. [Michael].
- Use vhost_task_wake() and __vhost_task_wake() for the public APIs, and
vhost_task_wake_up_process() for the local helper. [Michael]
- Drag the signalas back from their Spanish holiday. [Sebastian]
v1: https://lore.kernel.org/all/20250826004012.3835150-1-seanjc@google.com
Sean Christopherson (3):
vhost_task: Don't wake KVM x86's recovery thread if vhost task was
killed
vhost_task: Allow caller to omit handle_sigkill() callback
KVM: x86/mmu: Don't register a sigkill callback for NX hugepage
recovery tasks
arch/x86/kvm/mmu/mmu.c | 7 +---
drivers/vhost/vhost.c | 2 +-
include/linux/sched/vhost_task.h | 1 +
kernel/vhost_task.c | 62 +++++++++++++++++++++++++++-----
4 files changed, 56 insertions(+), 16 deletions(-)
base-commit: 1b237f190eb3d36f52dffe07a40b5eb210280e00
--
2.51.0.268.g9569e192d0-goog
Powered by blists - more mailing lists