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

Fedor Pchelkin pchelkin at ispras.ru
Tue Nov 25 11:33:56 MSK 2025


On Sat, 22. Nov 21:21, Alexey Simakov wrote:
> 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>
> ---

Просьба выслать адаптированный патч для LVC 5.10, 6.1 и 6.12 веток,
направив его в lvc-patches at linuxtesting.org с указанием целевых веток в
теме письма.

Апстримный не применяется по крайней мере к 5.10 и 6.1 в связи с
изменениями в контексте.

>  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



More information about the lvc-project mailing list