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 <[email protected]>
---
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
On 26/10/19 05:23, Zhenzhong Duan wrote:
> 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 <[email protected]>
> ---
> 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;
>
>
Zeroing grow_start will simply disable halt polling. Is that a problem?
Paolo