|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 2/2] libxl: fix stale timeout event callback race
Jim Fehlig writes ("Re: [Xen-devel] [PATCH 2/2] libxl: fix stale timeout event
callback race"):
> Ian Jackson wrote:
> > Specifically, this code has an integer arithmetic overflow.
>
> Well, this patch is removing that buggy code :).
I think you need to have some code somewhere which does the
complicated arithmetic dance to avoid the integer overflow. Does your
timer registration function have the same bug ?
> After again reading
> libxl_event.h, I'm considering the below patch in the libvirt libxl
> driver. The change is primarily inspired by this comment for
> libxl_osevent_occurred_timeout:
...
> /* Implicitly, on entry to this function the timeout has been
> * deregistered. If _occurred_timeout is called, libxl will not
> * call timeout_deregister; if it wants to requeue the timeout it
> * will call timeout_register again.
> */
Well your patch is only correct when used with the new libxl, with my
patches.
> diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
> index 302f81c..d4055be 100644
> --- a/src/libxl/libxl_driver.c
> +++ b/src/libxl/libxl_driver.c
> @@ -184,6 +184,8 @@ static void libxlTimerCallback(int timer
> ATTRIBUTE_UNUSED, void *timer_v)
> {
> struct libxlOSEventHookTimerInfo *timer_info = timer_v;
>
> + virEventRemoveTimeout(timer_info->id);
> + timer_info->id = -1;
I don't understand why you need this. Doesn't libvirt remove timers
when they fire ? If it doesn't, do they otherwise not keep
reoccurring ?
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |