[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] libxc: fix xc_gntshr_munmap semantic



CC'ed Ian.

On 26.04.2013 14:40, Marek Marczykowski wrote:
> "count" parameter should be pages count (as stated in comment in
> xenctrl.h), not bytes count.
> This patch fixes also the only user of this function (in xen sources) -
> libvchan.
> 
> Signed-off-by: Marek Marczykowski <marmarek@xxxxxxxxxxxxxxxxxxxxxx>
> ---
>  tools/libvchan/init.c        |  4 ++--
>  tools/libvchan/io.c          | 10 ++++++----
>  tools/libxc/xc_linux_osdep.c |  2 +-
>  3 files changed, 9 insertions(+), 7 deletions(-)
> 
> diff --git a/tools/libvchan/init.c b/tools/libvchan/init.c
> index 0c7cff6..f0d2505 100644
> --- a/tools/libvchan/init.c
> +++ b/tools/libvchan/init.c
> @@ -129,9 +129,9 @@ out:
>       return ring_ref;
>  out_unmap_left:
>       if (pages_left)
> -             xc_gntshr_munmap(ctrl->gntshr, ctrl->read.buffer, pages_left * 
> PAGE_SIZE);
> +             xc_gntshr_munmap(ctrl->gntshr, ctrl->read.buffer, pages_left);
>  out_ring:
> -     xc_gntshr_munmap(ctrl->gntshr, ring, PAGE_SIZE);
> +     xc_gntshr_munmap(ctrl->gntshr, ring, 1);
>       ring_ref = -1;
>       ctrl->ring = NULL;
>       ctrl->write.order = ctrl->read.order = 0;
> diff --git a/tools/libvchan/io.c b/tools/libvchan/io.c
> index 3c8d236..3040099 100644
> --- a/tools/libvchan/io.c
> +++ b/tools/libvchan/io.c
> @@ -324,16 +324,18 @@ void libxenvchan_close(struct libxenvchan *ctrl)
>       if (!ctrl)
>               return;
>       if (ctrl->read.order >= PAGE_SHIFT)
> -             munmap(ctrl->read.buffer, 1 << ctrl->read.order);
> +             xc_gntshr_munmap(ctrl->gntshr, ctrl->read.buffer,
> +                             1 << (ctrl->read.order - PAGE_SHIFT));
>       if (ctrl->write.order >= PAGE_SHIFT)
> -             munmap(ctrl->write.buffer, 1 << ctrl->write.order);
> +             xc_gntshr_munmap(ctrl->gntshr, ctrl->write.buffer,
> +                             1 << (ctrl->write.order - PAGE_SHIFT));
>       if (ctrl->ring) {
>               if (ctrl->is_server) {
>                       ctrl->ring->srv_live = 0;
> -                     xc_gntshr_munmap(ctrl->gntshr, ctrl->ring, PAGE_SIZE);
> +                     xc_gntshr_munmap(ctrl->gntshr, ctrl->ring, 1);
>               } else {
>                       ctrl->ring->cli_live = 0;
> -                     xc_gnttab_munmap(ctrl->gnttab, ctrl->ring, PAGE_SIZE);
> +                     xc_gnttab_munmap(ctrl->gnttab, ctrl->ring, 1);
>               }
>       }
>       if (ctrl->event) {
> diff --git a/tools/libxc/xc_linux_osdep.c b/tools/libxc/xc_linux_osdep.c
> index 36832b6..3c43fca 100644
> --- a/tools/libxc/xc_linux_osdep.c
> +++ b/tools/libxc/xc_linux_osdep.c
> @@ -825,7 +825,7 @@ static void *linux_gntshr_share_pages(xc_gntshr *xch, 
> xc_osdep_handle h,
>  static int linux_gntshr_munmap(xc_gntshr *xcg, xc_osdep_handle h,
>                                 void *start_address, uint32_t count)
>  {
> -    return munmap(start_address, count);
> +    return munmap(start_address, count * XC_PAGE_SIZE);
>  }
>  
>  static struct xc_osdep_ops linux_gntshr_ops = {
> 


-- 
Best Regards / Pozdrawiam,
Marek Marczykowski
Invisible Things Lab

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.