From: Sebastian Andrzej Siewior <[email protected]> Sent: Wednesday, April 
1, 2026 8:15 AM
> 
> vmbus_irq_initialized is only true if the registration of the per-CPU
> threads succeeded. If it failed, the whole registration aborts and the
> vmbus_exit() path is never called.
> 
> Remove vmbus_irq_initialized.
> 
> Signed-off-by: Sebastian Andrzej Siewior <[email protected]>

Reviewed-by: Michael Kelley <[email protected]>
But see comment about the patch Subject prefix from Patch 1 of this series.

> ---
>  drivers/hv/vmbus_drv.c | 14 ++++----------
>  1 file changed, 4 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c
> index e44275370ac2a..7417841cd1f70 100644
> --- a/drivers/hv/vmbus_drv.c
> +++ b/drivers/hv/vmbus_drv.c
> @@ -1392,8 +1392,6 @@ static void run_vmbus_irqd(unsigned int cpu)
>       __vmbus_isr();
>  }
> 
> -static bool vmbus_irq_initialized;
> -
>  static struct smp_hotplug_thread vmbus_irq_threads = {
>       .store                  = &vmbus_irqd,
>       .setup                  = vmbus_irqd_setup,
> @@ -1513,11 +1511,10 @@ static int vmbus_bus_init(void)
>        * the VMbus interrupt handler.
>        */
> 
> -     if (IS_ENABLED(CONFIG_PREEMPT_RT) && !vmbus_irq_initialized) {
> +     if (IS_ENABLED(CONFIG_PREEMPT_RT)) {
>               ret = smpboot_register_percpu_thread(&vmbus_irq_threads);
>               if (ret)
>                       goto err_kthread;
> -             vmbus_irq_initialized = true;
>       }
> 
>       if (vmbus_irq == -1) {
> @@ -1561,10 +1558,8 @@ static int vmbus_bus_init(void)
>       else
>               free_percpu_irq(vmbus_irq, &vmbus_evt);
>  err_setup:
> -     if (IS_ENABLED(CONFIG_PREEMPT_RT) && vmbus_irq_initialized) {
> +     if (IS_ENABLED(CONFIG_PREEMPT_RT))
>               smpboot_unregister_percpu_thread(&vmbus_irq_threads);
> -             vmbus_irq_initialized = false;
> -     }
>  err_kthread:
>       bus_unregister(&hv_bus);
>       return ret;
> @@ -3033,10 +3028,9 @@ static void __exit vmbus_exit(void)
>               hv_remove_vmbus_handler();
>       else
>               free_percpu_irq(vmbus_irq, &vmbus_evt);
> -     if (IS_ENABLED(CONFIG_PREEMPT_RT) && vmbus_irq_initialized) {
> +     if (IS_ENABLED(CONFIG_PREEMPT_RT))
>               smpboot_unregister_percpu_thread(&vmbus_irq_threads);
> -             vmbus_irq_initialized = false;
> -     }
> +
>       for_each_online_cpu(cpu) {
>               struct hv_per_cpu_context *hv_cpu
>                       = per_cpu_ptr(hv_context.cpu_context, cpu);
> --
> 2.53.0


Reply via email to