Hello, Jan!

On 2/23/21 6:26 PM, Jan Beulich wrote:
> In order for subsequent unmapping to not mistakenly unmap handle 0,
> record a perceived always-invalid one instead.
>
> Signed-off-by: Jan Beulich <jbeul...@suse.com>
> Reviewed-by: Juergen Gross <jgr...@suse.com>
Reviewed-by: Oleksandr Andrushchenko <oleksandr_andrushche...@epam.com>
> ---
> v2: Use INVALID_GRANT_HANDLE.
>
> --- a/drivers/xen/xen-front-pgdir-shbuf.c
> +++ b/drivers/xen/xen-front-pgdir-shbuf.c
> @@ -305,11 +305,18 @@ static int backend_map(struct xen_front_
>   
>       /* Save handles even if error, so we can unmap. */
>       for (cur_page = 0; cur_page < buf->num_pages; cur_page++) {
> -             buf->backend_map_handles[cur_page] = map_ops[cur_page].handle;
> -             if (unlikely(map_ops[cur_page].status != GNTST_okay))
> +             if (likely(map_ops[cur_page].status == GNTST_okay)) {
> +                     buf->backend_map_handles[cur_page] =
> +                             map_ops[cur_page].handle;
> +             } else {
> +                     buf->backend_map_handles[cur_page] =
> +                             INVALID_GRANT_HANDLE;
> +                     if (!ret)
> +                             ret = -ENXIO;
>                       dev_err(&buf->xb_dev->dev,
>                               "Failed to map page %d: %d\n",
>                               cur_page, map_ops[cur_page].status);
> +             }
>       }
>   
>       if (ret) {

Reply via email to