On 05/31/2017 09:03 AM, Julien Grall wrote: > Commit 5995a68 "xen/privcmd: Add support for Linux 64KB page granularity" did > not go far enough to support 64KB in mmap_batch_fn. > > The variable 'nr' is the number of 4KB chunk to map. However, when Linux > is using 64KB page granularity the array of pages (vma->vm_private_data) > contain one page per 64KB. Fix it by incrementing st->index correctly. > > Furthermore, st->va is not correctly incremented as PAGE_SIZE != > XEN_PAGE_SIZE. > > Fixes: 5995a68 ("xen/privcmd: Add support for Linux 64KB page granularity") > CC: stable@xxxxxxxxxxxxxxx > Reported-by: Feng Kan <fkan@xxxxxxx> > Signed-off-by: Julien Grall <julien.grall@xxxxxxx> > --- > drivers/xen/privcmd.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/xen/privcmd.c b/drivers/xen/privcmd.c > index 7a92a5e1d40c..feca75b07fdd 100644 > --- a/drivers/xen/privcmd.c > +++ b/drivers/xen/privcmd.c > @@ -362,8 +362,8 @@ static int mmap_batch_fn(void *data, int nr, void *state) > st->global_error = 1; > } > } > - st->va += PAGE_SIZE * nr; > - st->index += nr; > + st->va += XEN_PAGE_SIZE * nr; > + st->index += nr / XEN_PFN_PER_PAGE; > > return 0; > } Are we still using PAGE_MASK for xen_remap_domain_gfn_array()? -boris