[lvc-project] [PATCH] virt: vbox: fix possible circular timer scheduling

Fedor Pchelkin pchelkin at ispras.ru
Sat Nov 22 21:29:30 MSK 2025


On Sat, 22. Nov 21:21, Alexey Simakov wrote:

А куда пропало предложение ниже?  Я его не цитировал и его стоило оставить,
иначе непонятно откуда берётся 'this function'.

During driver cleanup, the timer is stopped using timer_delete_sync().

Переотправлять пока не надо, если мэйнтейнеры не попросят.

> According to timer.c documentation, callers of this function should ensure
> the timer is not rearmed.  Meanwhile, the heartbeat callback may itself
> reschedule the heartbeat timer which could lead to theoretically
> indefinite loop iterations inside __timer_delete_sync(), due to a race
> when the heartbeat callback is always running when it's attempted to be
> detached.
> 
> Use timer_shutdown_sync() instead to avoid this issue.
> 
> Found by Linux Verification Center (linuxtesting.org) with SVACE.
> 
> Fixes: 0ba002bc4393 ("virt: Add vboxguest driver for Virtual Box Guest integration"):
> Signed-off-by: Alexey Simakov <bigalex934 at gmail.com>
> ---
>  drivers/virt/vboxguest/vboxguest_core.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/virt/vboxguest/vboxguest_core.c b/drivers/virt/vboxguest/vboxguest_core.c
> index b177a534b6a4..508ba711669d 100644
> --- a/drivers/virt/vboxguest/vboxguest_core.c
> +++ b/drivers/virt/vboxguest/vboxguest_core.c
> @@ -495,7 +495,7 @@ static int vbg_heartbeat_init(struct vbg_dev *gdev)
>   */
>  static void vbg_heartbeat_exit(struct vbg_dev *gdev)
>  {
> -	timer_delete_sync(&gdev->heartbeat_timer);
> +	timer_shutdown_sync(&gdev->heartbeat_timer);
>  	vbg_heartbeat_host_config(gdev, false);
>  	vbg_req_free(gdev->guest_heartbeat_req,
>  		     sizeof(*gdev->guest_heartbeat_req));
> -- 
> 2.34.1
> 
> 
> _______________________________________________
> lvc-project mailing list
> lvc-project at linuxtesting.org
> http://linuxtesting.org/cgi-bin/mailman/listinfo/lvc-project



More information about the lvc-project mailing list