|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [For Xen-4.10 PATCH v2 3/3] Avoid excess icache flushes in populate_physmap() before domain has been created
On 26/05/17 12:14, Punit Agrawal wrote:
> diff --git a/xen/common/memory.c b/xen/common/memory.c
> index 52879e7438..34d2dda8b4 100644
> --- a/xen/common/memory.c
> +++ b/xen/common/memory.c
> @@ -152,16 +152,26 @@ static void populate_physmap(struct memop_args *a)
> max_order(curr_d)) )
> return;
>
> - /*
> - * With MEMF_no_tlbflush set, alloc_heap_pages() will ignore
> - * TLB-flushes. After VM creation, this is a security issue (it can
> - * make pages accessible to guest B, when guest A may still have a
> - * cached mapping to them). So we do this only during domain creation,
> - * when the domain itself has not yet been unpaused for the first
> - * time.
> - */
> if ( unlikely(!d->creation_finished) )
> + {
> + /*
> + * With MEMF_no_tlbflush set, alloc_heap_pages() will ignore
> + * TLB-flushes. After VM creation, this is a security issue (it can
> + * make pages accessible to guest B, when guest A may still have a
> + * cached mapping to them). So we do this only during domain
> creation,
> + * when the domain itself has not yet been unpaused for the first
> + * time.
> + */
> a->memflags |= MEMF_no_tlbflush;
> + /*
> + * With MEMF_no_icache_flush, alloc_heap_pages() will skip
> + * performing icache flushes. We do it only before domain
> + * creation as once the domain is running there is a danger of
> + * executing instructions from stale caches if icache flush is
> + * delayed.
> + */
> + a->memflags |= MEMF_no_icache_flush;
> + }
>
> for ( i = a->nr_done; i < a->nr_extents; i++ )
> {
> @@ -211,7 +221,6 @@ static void populate_physmap(struct memop_args *a)
> }
>
> mfn = gpfn;
> - page = mfn_to_page(mfn);
What is the purpose of this hunk?
It is not mentioned in the commit message at all, and looks unsafe to me.
~Andrew
> }
> else
> {
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |