vcpu->halt_poll_ns could be zeroed in certain cases (e.g. by halt_poll_ns_shrink). If halt_poll_ns_grow_start is zero, vcpu->halt_poll_ns will never be larger than zero. Signed-off-by: Zhenzhong Duan <zhenzhong.duan@xxxxxxxxxx> --- virt/kvm/kvm_main.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 2ca2979..1b6fe3b 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -2266,6 +2266,13 @@ static void grow_halt_poll_ns(struct kvm_vcpu *vcpu) goto out; val *= grow; + + /* + * vcpu->halt_poll_ns needs a nonzero start point to grow if it's zero. + */ + if (!grow_start) + grow_start = 1; + if (val < grow_start) val = grow_start; -- 1.8.3.1