|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 2/3] xen/pvh: check permissions when adding MMIO regions
At 18:19 +0000 on 20 Jan (1421774373), Andrew Cooper wrote:
> On 20/01/15 17:05, Roger Pau Monne wrote:
> > Check that MMIO regions added to PVH Dom0 are allowed. Previously a PVH Dom0
> > would have access to the full MMIO range.
> >
> > Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
> > Cc: Jan Beulich <jbeulich@xxxxxxxx>
> > Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
> > ---
> > Changes since v1:
> > - Use the newly introduced p2m_access_t to set the access type.
> > - Don't add a next label.
> > ---
> > xen/arch/x86/domain_build.c | 17 +++++++++++++++--
> > 1 file changed, 15 insertions(+), 2 deletions(-)
> >
> > diff --git a/xen/arch/x86/domain_build.c b/xen/arch/x86/domain_build.c
> > index f687c78..41d2541 100644
> > --- a/xen/arch/x86/domain_build.c
> > +++ b/xen/arch/x86/domain_build.c
> > @@ -319,12 +319,25 @@ static __init void pvh_add_mem_mapping(struct domain
> > *d, unsigned long gfn,
> > unsigned long mfn, unsigned long
> > nr_mfns)
> > {
> > unsigned long i;
> > + mfn_t omfn;
> > + p2m_type_t t;
> > + p2m_access_t a;
> > int rc;
> >
> > for ( i = 0; i < nr_mfns; i++ )
> > {
> > - if ( (rc = set_mmio_p2m_entry(d, gfn + i, _mfn(mfn + i),
> > - p2m_get_hostp2m(d)->default_access))
> > )
> > + if ( !iomem_access_permitted(d, mfn + i, mfn + i) ) {
> > + omfn = get_gfn_query_unlocked(d, gfn + i, &t);
> > + guest_physmap_remove_page(d, gfn + i, mfn_x(omfn),
> > PAGE_ORDER_4K);
> > + continue;
> > + }
>
> This suggests a design flaw (possibly pre-existing). We should not be
> removing physmap entries in pvh_add_mem_mapping(), nor should we be a
> position to need to revoke physmap entries during domain build.
>
> If there is anything needing revoking at this stage, it should not have
> been added earlier.
+1. ISTR saying something like this before.
Tim.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |