Message ID | 518D1EB8.1050400@linaro.org |
---|---|
State | Accepted, archived |
Headers | show |
On 10/05/2013 17:22, "Julien Grall" <julien.grall@linaro.org> wrote: > ioremap function can unlikely return an unaligned virtual address if > the physical address itself is unaligned on a page size. > > Signed-off-by: Julien Grall <julien.grall@linaro.org> > Acked-by: Jan Beulich <jbeulich@suse.com> > CC: keir@xen.org Acked-by: Keir Fraser <keir@xen.org> > Changes in v5: > - replace unsigned int by unsigned long > > Changes in v4: > - replace vaddr_t by unsigned int > --- > xen/include/xen/vmap.h | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/xen/include/xen/vmap.h b/xen/include/xen/vmap.h > index 88e5d99..daee7f5 100644 > --- a/xen/include/xen/vmap.h > +++ b/xen/include/xen/vmap.h > @@ -15,7 +15,9 @@ void __iomem *ioremap(paddr_t, size_t); > > static inline void iounmap(void __iomem *va) > { > - vunmap((void __force *)va); > + unsigned long addr = (unsigned long)(void __force *)va; > + > + vunmap((void *)(addr & PAGE_MASK)); > } > > void vm_init(void);
diff --git a/xen/include/xen/vmap.h b/xen/include/xen/vmap.h index 88e5d99..daee7f5 100644 --- a/xen/include/xen/vmap.h +++ b/xen/include/xen/vmap.h @@ -15,7 +15,9 @@ void __iomem *ioremap(paddr_t, size_t); static inline void iounmap(void __iomem *va) { - vunmap((void __force *)va); + unsigned long addr = (unsigned long)(void __force *)va; + + vunmap((void *)(addr & PAGE_MASK)); } void vm_init(void);