> From: Michael Kelley <[email protected]>
> 
> The per-cpu variable vmbus_evt is currently dynamically allocated. It's only 8
> bytes, so just allocate it statically to simplify and save a few lines of 
> code.
> 
> Signed-off-by: Michael Kelley <[email protected]>

Reviewed-by: Long Li <[email protected]>

> ---
>  drivers/hv/vmbus_drv.c | 23 +++++++++--------------
>  1 file changed, 9 insertions(+), 14 deletions(-)
> 
> diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c index
> 97dfa529d250..2219ce41b384 100644
> --- a/drivers/hv/vmbus_drv.c
> +++ b/drivers/hv/vmbus_drv.c
> @@ -51,7 +51,7 @@ static struct device  *vmbus_root_device;
> 
>  static int hyperv_cpuhp_online;
> 
> -static long __percpu *vmbus_evt;
> +static DEFINE_PER_CPU(long, vmbus_evt);
> 
>  /* Values parsed from ACPI DSDT */
>  int vmbus_irq;
> @@ -1475,13 +1475,11 @@ static int vmbus_bus_init(void)
>         if (vmbus_irq == -1) {
>                 hv_setup_vmbus_handler(vmbus_isr);
>         } else {
> -               vmbus_evt = alloc_percpu(long);
>                 ret = request_percpu_irq(vmbus_irq, vmbus_percpu_isr,
> -                               "Hyper-V VMbus", vmbus_evt);
> +                               "Hyper-V VMbus", &vmbus_evt);
>                 if (ret) {
>                         pr_err("Can't request Hyper-V VMbus IRQ %d, Err %d",
>                                         vmbus_irq, ret);
> -                       free_percpu(vmbus_evt);
>                         goto err_setup;
>                 }
>         }
> @@ -1510,12 +1508,10 @@ static int vmbus_bus_init(void)
>         return 0;
> 
>  err_connect:
> -       if (vmbus_irq == -1) {
> +       if (vmbus_irq == -1)
>                 hv_remove_vmbus_handler();
> -       } else {
> -               free_percpu_irq(vmbus_irq, vmbus_evt);
> -               free_percpu(vmbus_evt);
> -       }
> +       else
> +               free_percpu_irq(vmbus_irq, &vmbus_evt);
>  err_setup:
>         bus_unregister(&hv_bus);
>         return ret;
> @@ -2981,12 +2977,11 @@ static void __exit vmbus_exit(void)
>         vmbus_connection.conn_state = DISCONNECTED;
>         hv_stimer_global_cleanup();
>         vmbus_disconnect();
> -       if (vmbus_irq == -1) {
> +       if (vmbus_irq == -1)
>                 hv_remove_vmbus_handler();
> -       } else {
> -               free_percpu_irq(vmbus_irq, vmbus_evt);
> -               free_percpu(vmbus_evt);
> -       }
> +       else
> +               free_percpu_irq(vmbus_irq, &vmbus_evt);
> +
>         for_each_online_cpu(cpu) {
>                 struct hv_per_cpu_context *hv_cpu
>                         = per_cpu_ptr(hv_context.cpu_context, cpu);
> --
> 2.25.1


Reply via email to