Message ID | 1327667215-5411-4-git-send-email-stefano.stabellini@eu.citrix.com |
---|---|
State | New |
Headers | show |
On 01/27/2012 01:26 PM, Stefano Stabellini wrote: > Also delta in qemu_next_alarm_deadline is a 64 bit value so set the > default to INT64_MAX instead of INT32_MAX. > > Signed-off-by: Stefano Stabellini<stefano.stabellini@eu.citrix.com> > --- > qemu-timer.c | 10 ++++------ > 1 files changed, 4 insertions(+), 6 deletions(-) > > diff --git a/qemu-timer.c b/qemu-timer.c > index cd026c6..648db1d 100644 > --- a/qemu-timer.c > +++ b/qemu-timer.c > @@ -106,23 +106,21 @@ static inline int alarm_has_dynticks(struct qemu_alarm_timer *t) > > static int64_t qemu_next_alarm_deadline(void) > { > - int64_t delta; > + int64_t delta = INT64_MAX; I'm worried of overflows elsewhere... > int64_t rtdelta; > > - if (!use_icount&& vm_clock->active_timers) { > + if (!use_icount&& vm_clock->enabled&& vm_clock->active_timers) { > delta = vm_clock->active_timers->expire_time - > qemu_get_clock_ns(vm_clock); > - } else { > - delta = INT32_MAX; > } > - if (host_clock->active_timers) { > + if (host_clock->enabled&& host_clock->active_timers) { > int64_t hdelta = host_clock->active_timers->expire_time - > qemu_get_clock_ns(host_clock); > if (hdelta< delta) { > delta = hdelta; > } > } > - if (rt_clock->active_timers) { > + if (rt_clock->enabled&& rt_clock->active_timers) { > rtdelta = (rt_clock->active_timers->expire_time - > qemu_get_clock_ns(rt_clock)); > if (rtdelta< delta) { The patch is otherwise okay, but without looking more closely at the callers I'm not quite ready to give my Reviewed-by. Paolo
On Fri, 27 Jan 2012, Paolo Bonzini wrote: > On 01/27/2012 01:26 PM, Stefano Stabellini wrote: > > Also delta in qemu_next_alarm_deadline is a 64 bit value so set the > > default to INT64_MAX instead of INT32_MAX. > > > > Signed-off-by: Stefano Stabellini<stefano.stabellini@eu.citrix.com> > > --- > > qemu-timer.c | 10 ++++------ > > 1 files changed, 4 insertions(+), 6 deletions(-) > > > > diff --git a/qemu-timer.c b/qemu-timer.c > > index cd026c6..648db1d 100644 > > --- a/qemu-timer.c > > +++ b/qemu-timer.c > > @@ -106,23 +106,21 @@ static inline int alarm_has_dynticks(struct qemu_alarm_timer *t) > > > > static int64_t qemu_next_alarm_deadline(void) > > { > > - int64_t delta; > > + int64_t delta = INT64_MAX; > > I'm worried of overflows elsewhere... I think that you are right: mm_rearm_timer and win32_rearm_timer would overflow. I'll just repost the patch using INT32_MAX.
On Fri, 27 Jan 2012, Stefano Stabellini wrote: > On Fri, 27 Jan 2012, Paolo Bonzini wrote: > > On 01/27/2012 01:26 PM, Stefano Stabellini wrote: > > > Also delta in qemu_next_alarm_deadline is a 64 bit value so set the > > > default to INT64_MAX instead of INT32_MAX. > > > > > > Signed-off-by: Stefano Stabellini<stefano.stabellini@eu.citrix.com> > > > --- > > > qemu-timer.c | 10 ++++------ > > > 1 files changed, 4 insertions(+), 6 deletions(-) > > > > > > diff --git a/qemu-timer.c b/qemu-timer.c > > > index cd026c6..648db1d 100644 > > > --- a/qemu-timer.c > > > +++ b/qemu-timer.c > > > @@ -106,23 +106,21 @@ static inline int alarm_has_dynticks(struct qemu_alarm_timer *t) > > > > > > static int64_t qemu_next_alarm_deadline(void) > > > { > > > - int64_t delta; > > > + int64_t delta = INT64_MAX; > > > > I'm worried of overflows elsewhere... > > I think that you are right: mm_rearm_timer and win32_rearm_timer would > overflow. > I'll just repost the patch using INT32_MAX. Actually it is better to fix mm_rearm_timer and win32_rearm_timer so that they won't overflow anymore. I'll add a patch to do that.
diff --git a/qemu-timer.c b/qemu-timer.c index cd026c6..648db1d 100644 --- a/qemu-timer.c +++ b/qemu-timer.c @@ -106,23 +106,21 @@ static inline int alarm_has_dynticks(struct qemu_alarm_timer *t) static int64_t qemu_next_alarm_deadline(void) { - int64_t delta; + int64_t delta = INT64_MAX; int64_t rtdelta; - if (!use_icount && vm_clock->active_timers) { + if (!use_icount && vm_clock->enabled && vm_clock->active_timers) { delta = vm_clock->active_timers->expire_time - qemu_get_clock_ns(vm_clock); - } else { - delta = INT32_MAX; } - if (host_clock->active_timers) { + if (host_clock->enabled && host_clock->active_timers) { int64_t hdelta = host_clock->active_timers->expire_time - qemu_get_clock_ns(host_clock); if (hdelta < delta) { delta = hdelta; } } - if (rt_clock->active_timers) { + if (rt_clock->enabled && rt_clock->active_timers) { rtdelta = (rt_clock->active_timers->expire_time - qemu_get_clock_ns(rt_clock)); if (rtdelta < delta) {
Also delta in qemu_next_alarm_deadline is a 64 bit value so set the default to INT64_MAX instead of INT32_MAX. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> --- qemu-timer.c | 10 ++++------ 1 files changed, 4 insertions(+), 6 deletions(-)