diff options
| author | Keith Busch <[email protected]> | 2025-02-27 23:06:31 +0000 |
|---|---|---|
| committer | Paolo Bonzini <[email protected]> | 2025-03-01 07:54:18 +0000 |
| commit | 916b7f42b3b3b539a71c204a9b49fdc4ca92cd82 (patch) | |
| tree | 31ede935f90b03bbcbb5b36165b389bb11d96378 /net/unix/sysctl_net_unix.c | |
| parent | vhost: return task creation error instead of NULL (diff) | |
| download | kernel-916b7f42b3b3b539a71c204a9b49fdc4ca92cd82.tar.gz kernel-916b7f42b3b3b539a71c204a9b49fdc4ca92cd82.zip | |
kvm: retry nx_huge_page_recovery_thread creation
A VMM may send a non-fatal signal to its threads, including vCPU tasks,
at any time, and thus may signal vCPU tasks during KVM_RUN. If a vCPU
task receives the signal while its trying to spawn the huge page recovery
vhost task, then KVM_RUN will fail due to copy_process() returning
-ERESTARTNOINTR.
Rework call_once() to mark the call complete if and only if the called
function succeeds, and plumb the function's true error code back to the
call_once() invoker. This provides userspace with the correct, non-fatal
error code so that the VMM doesn't terminate the VM on -ENOMEM, and allows
subsequent KVM_RUN a succeed by virtue of retrying creation of the NX huge
page task.
Co-developed-by: Sean Christopherson <[email protected]>
Signed-off-by: Sean Christopherson <[email protected]>
[implemented the kvm user side]
Signed-off-by: Keith Busch <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
Diffstat (limited to 'net/unix/sysctl_net_unix.c')
0 files changed, 0 insertions, 0 deletions
