Ian Campbell
2013-Jan-22 11:39 UTC
[PATCH] xen: Simplify the space of spaces supported by XENMEM_add_to_physmap(_range)
XENMAPSPACE_gmfn_foreign is not supported by XENMEM_add_to_physmap.
Although in theory XENMEM_add_to_physmap_range could support
XENMAPSPACE_gmfn_range this is no different to
XENMAPSPACE_gmfn in the context of the ranged hypercall so disallow it
to avoid any confusion.
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
---
xen/arch/arm/mm.c | 6 +++++-
xen/include/public/memory.h | 6 ++++--
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
index eb5213e..faa9742 100644
--- a/xen/arch/arm/mm.c
+++ b/xen/arch/arm/mm.c
@@ -648,7 +648,7 @@ long arch_memory_op(int op, XEN_GUEST_HANDLE_PARAM(void)
arg)
if ( copy_from_guest(&xatp, arg, 1) )
return -EFAULT;
- /* This one is only supported by add_to_physmap_range */
+ /* Foreign mapping is only supported by add_to_physmap_range */
if ( xatp.space == XENMAPSPACE_gmfn_foreign )
return -EINVAL;
@@ -679,6 +679,10 @@ long arch_memory_op(int op, XEN_GUEST_HANDLE_PARAM(void)
arg)
if ( copy_from_guest(&xatpr, arg, 1) )
return -EFAULT;
+ /* This mapspace is redundant for this hypercall */
+ if ( xatpr.space == XENMAPSPACE_gmfn_range )
+ return -EINVAL;
+
rc = rcu_lock_target_domain_by_id(xatpr.domid, &d);
if ( rc != 0 )
return rc;
diff --git a/xen/include/public/memory.h b/xen/include/public/memory.h
index 62acabd..a248c07 100644
--- a/xen/include/public/memory.h
+++ b/xen/include/public/memory.h
@@ -203,8 +203,10 @@ DEFINE_XEN_GUEST_HANDLE(xen_machphys_mapping_t);
#define XENMAPSPACE_shared_info 0 /* shared info page */
#define XENMAPSPACE_grant_table 1 /* grant table page */
#define XENMAPSPACE_gmfn 2 /* GMFN */
-#define XENMAPSPACE_gmfn_range 3 /* GMFN range */
-#define XENMAPSPACE_gmfn_foreign 4 /* GMFN from another dom */
+#define XENMAPSPACE_gmfn_range 3 /* GMFN range, XENMEM_add_to_physmap only.
*/
+#define XENMAPSPACE_gmfn_foreign 4 /* GMFN from another dom,
+ * XENMEM_add_to_physmap_range only.
+ */
/* ` } */
/*
--
1.7.9.1
Stefano Stabellini
2013-Jan-22 12:17 UTC
Re: [PATCH] xen: Simplify the space of spaces supported by XENMEM_add_to_physmap(_range)
On Tue, 22 Jan 2013, Ian Campbell wrote:> XENMAPSPACE_gmfn_foreign is not supported by XENMEM_add_to_physmap. > > Although in theory XENMEM_add_to_physmap_range could support > XENMAPSPACE_gmfn_range this is no different to > XENMAPSPACE_gmfn in the context of the ranged hypercall so disallow it > to avoid any confusion. > > Signed-off-by: Ian Campbell <ian.campbell@citrix.com>Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>> xen/arch/arm/mm.c | 6 +++++- > xen/include/public/memory.h | 6 ++++-- > 2 files changed, 9 insertions(+), 3 deletions(-) > > diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c > index eb5213e..faa9742 100644 > --- a/xen/arch/arm/mm.c > +++ b/xen/arch/arm/mm.c > @@ -648,7 +648,7 @@ long arch_memory_op(int op, XEN_GUEST_HANDLE_PARAM(void) arg) > if ( copy_from_guest(&xatp, arg, 1) ) > return -EFAULT; > > - /* This one is only supported by add_to_physmap_range */ > + /* Foreign mapping is only supported by add_to_physmap_range */ > if ( xatp.space == XENMAPSPACE_gmfn_foreign ) > return -EINVAL; > > @@ -679,6 +679,10 @@ long arch_memory_op(int op, XEN_GUEST_HANDLE_PARAM(void) arg) > if ( copy_from_guest(&xatpr, arg, 1) ) > return -EFAULT; > > + /* This mapspace is redundant for this hypercall */ > + if ( xatpr.space == XENMAPSPACE_gmfn_range ) > + return -EINVAL; > + > rc = rcu_lock_target_domain_by_id(xatpr.domid, &d); > if ( rc != 0 ) > return rc; > diff --git a/xen/include/public/memory.h b/xen/include/public/memory.h > index 62acabd..a248c07 100644 > --- a/xen/include/public/memory.h > +++ b/xen/include/public/memory.h > @@ -203,8 +203,10 @@ DEFINE_XEN_GUEST_HANDLE(xen_machphys_mapping_t); > #define XENMAPSPACE_shared_info 0 /* shared info page */ > #define XENMAPSPACE_grant_table 1 /* grant table page */ > #define XENMAPSPACE_gmfn 2 /* GMFN */ > -#define XENMAPSPACE_gmfn_range 3 /* GMFN range */ > -#define XENMAPSPACE_gmfn_foreign 4 /* GMFN from another dom */ > +#define XENMAPSPACE_gmfn_range 3 /* GMFN range, XENMEM_add_to_physmap only. */ > +#define XENMAPSPACE_gmfn_foreign 4 /* GMFN from another dom, > + * XENMEM_add_to_physmap_range only. > + */ > /* ` } */ > > /* > -- > 1.7.9.1 >
Keir Fraser
2013-Jan-22 20:04 UTC
Re: [PATCH] xen: Simplify the space of spaces supported by XENMEM_add_to_physmap(_range)
On 22/01/2013 11:39, "Ian Campbell" <ian.campbell@citrix.com> wrote:> XENMAPSPACE_gmfn_foreign is not supported by XENMEM_add_to_physmap. > > Although in theory XENMEM_add_to_physmap_range could support > XENMAPSPACE_gmfn_range this is no different to > XENMAPSPACE_gmfn in the context of the ranged hypercall so disallow it > to avoid any confusion. > > Signed-off-by: Ian Campbell <ian.campbell@citrix.com>Acked-by: Keir Fraser <keir@xen.org>> --- > xen/arch/arm/mm.c | 6 +++++- > xen/include/public/memory.h | 6 ++++-- > 2 files changed, 9 insertions(+), 3 deletions(-) > > diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c > index eb5213e..faa9742 100644 > --- a/xen/arch/arm/mm.c > +++ b/xen/arch/arm/mm.c > @@ -648,7 +648,7 @@ long arch_memory_op(int op, XEN_GUEST_HANDLE_PARAM(void) > arg) > if ( copy_from_guest(&xatp, arg, 1) ) > return -EFAULT; > > - /* This one is only supported by add_to_physmap_range */ > + /* Foreign mapping is only supported by add_to_physmap_range */ > if ( xatp.space == XENMAPSPACE_gmfn_foreign ) > return -EINVAL; > > @@ -679,6 +679,10 @@ long arch_memory_op(int op, XEN_GUEST_HANDLE_PARAM(void) > arg) > if ( copy_from_guest(&xatpr, arg, 1) ) > return -EFAULT; > > + /* This mapspace is redundant for this hypercall */ > + if ( xatpr.space == XENMAPSPACE_gmfn_range ) > + return -EINVAL; > + > rc = rcu_lock_target_domain_by_id(xatpr.domid, &d); > if ( rc != 0 ) > return rc; > diff --git a/xen/include/public/memory.h b/xen/include/public/memory.h > index 62acabd..a248c07 100644 > --- a/xen/include/public/memory.h > +++ b/xen/include/public/memory.h > @@ -203,8 +203,10 @@ DEFINE_XEN_GUEST_HANDLE(xen_machphys_mapping_t); > #define XENMAPSPACE_shared_info 0 /* shared info page */ > #define XENMAPSPACE_grant_table 1 /* grant table page */ > #define XENMAPSPACE_gmfn 2 /* GMFN */ > -#define XENMAPSPACE_gmfn_range 3 /* GMFN range */ > -#define XENMAPSPACE_gmfn_foreign 4 /* GMFN from another dom */ > +#define XENMAPSPACE_gmfn_range 3 /* GMFN range, XENMEM_add_to_physmap only. > */ > +#define XENMAPSPACE_gmfn_foreign 4 /* GMFN from another dom, > + * XENMEM_add_to_physmap_range only. > + */ > /* ` } */ > > /*
Ian Campbell
2013-Jan-24 13:18 UTC
Re: [PATCH] xen: Simplify the space of spaces supported by XENMEM_add_to_physmap(_range)
On Tue, 2013-01-22 at 20:04 +0000, Keir Fraser wrote:> On 22/01/2013 11:39, "Ian Campbell" <ian.campbell@citrix.com> wrote: > > > XENMAPSPACE_gmfn_foreign is not supported by XENMEM_add_to_physmap. > > > > Although in theory XENMEM_add_to_physmap_range could support > > XENMAPSPACE_gmfn_range this is no different to > > XENMAPSPACE_gmfn in the context of the ranged hypercall so disallow it > > to avoid any confusion. > > > > Signed-off-by: Ian Campbell <ian.campbell@citrix.com> > > Acked-by: Keir Fraser <keir@xen.org>Applied, thanks.