Sukadev Bhattiprolu <suka...@linux.vnet.ibm.com> writes:

> diff --git a/arch/powerpc/platforms/powernv/vas-window.c 
> b/arch/powerpc/platforms/powernv/vas-window.c
> index 23c13a7..088ce56 100644
> --- a/arch/powerpc/platforms/powernv/vas-window.c
> +++ b/arch/powerpc/platforms/powernv/vas-window.c
> @@ -145,24 +145,42 @@ static void unmap_paste_region(struct vas_window 
> *window)
>  }
>  
>  /*
> - * Unmap the MMIO regions for a window.
> + * Unmap the MMIO regions for a window. Hold the vas_mutex so we don't
> + * unmap when the window's debugfs dir is in use. This serializes close
> + * of a window even on another VAS instance but since its not a critical
> + * path, just minimize the time we hold the mutex for now. We can add
> + * a per-instance mutex later if necessary.
>   */
>  static void unmap_winctx_mmio_bars(struct vas_window *window)
>  {
>       int len;
> +     void *uwc_map;
> +     void *hvwc_map;
>       u64 busaddr_start;
>  
> +     mutex_lock(&vas_mutex);
> +
>       if (window->hvwc_map) {
> -             get_hvwc_mmio_bar(window, &busaddr_start, &len);
> -             unmap_region(window->hvwc_map, busaddr_start, len);
> +             hvwc_map = window->hvwc_map;
>               window->hvwc_map = NULL;
>       }
>  
>       if (window->uwc_map) {
> -             get_uwc_mmio_bar(window, &busaddr_start, &len);
> -             unmap_region(window->uwc_map, busaddr_start, len);
> +             uwc_map = window->uwc_map;
>               window->uwc_map = NULL;
>       }
> +
> +     mutex_unlock(&vas_mutex);
> +
> +     if (hvwc_map) {
> +             get_hvwc_mmio_bar(window, &busaddr_start, &len);
> +             unmap_region(hvwc_map, busaddr_start, len);
> +     }
> +
> +     if (uwc_map) {
> +             get_uwc_mmio_bar(window, &busaddr_start, &len);
> +             unmap_region(uwc_map, busaddr_start, len);
> +     }

arch/powerpc/platforms/powernv/vas-window.c: In function 
'unmap_winctx_mmio_bars':
arch/powerpc/platforms/powernv/vas-window.c:137:2: error: 'uwc_map' may be used 
uninitialized in this function [-Werror=maybe-uninitialized]
  iounmap(addr);
  ^
arch/powerpc/platforms/powernv/vas-window.c:168:8: note: 'uwc_map' was declared 
here
  void *uwc_map;
        ^
arch/powerpc/platforms/powernv/vas-window.c:137:2: error: 'hvwc_map' may be 
used uninitialized in this function [-Werror=maybe-uninitialized]
  iounmap(addr);
  ^
arch/powerpc/platforms/powernv/vas-window.c:169:8: note: 'hvwc_map' was 
declared here
  void *hvwc_map;
        ^
cc1: all warnings being treated as errors


cheers

Reply via email to