[PATCH 5.11 011/329] kvm: Cap halt polling at kvm->max_halt_poll_ns

From: Greg Kroah-Hartman
Date: Mon May 17 2021 - 10:29:53 EST


From: David Matlack <dmatlack@xxxxxxxxxx>

commit 258785ef08b323bddd844b4926a32c2b2045a1b0 upstream.

When growing halt-polling, there is no check that the poll time exceeds
the per-VM limit. It's possible for vcpu->halt_poll_ns to grow past
kvm->max_halt_poll_ns and stay there until a halt which takes longer
than kvm->halt_poll_ns.

Signed-off-by: David Matlack <dmatlack@xxxxxxxxxx>
Signed-off-by: Venkatesh Srinivas <venkateshs@xxxxxxxxxxxx>
Message-Id: <20210506152442.4010298-1-venkateshs@xxxxxxxxxxxx>
Cc: stable@xxxxxxxxxxxxxxx
Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
---
virt/kvm/kvm_main.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -2734,8 +2734,8 @@ static void grow_halt_poll_ns(struct kvm
if (val < grow_start)
val = grow_start;

- if (val > halt_poll_ns)
- val = halt_poll_ns;
+ if (val > vcpu->kvm->max_halt_poll_ns)
+ val = vcpu->kvm->max_halt_poll_ns;

vcpu->halt_poll_ns = val;
out: