All of lore.kernel.org
 help / color / mirror / Atom feed
From: Julien Grall <julien.grall@arm.com>
To: sstabellini@kernel.org, xen-devel@lists.xenproject.org
Cc: Julien Grall <julien.grall@arm.com>
Subject: [PATCH 5/8] xen/arm: Allow a privileged domain to map foreign page from DOMID_XEN
Date: Tue,  6 Nov 2018 19:14:51 +0000	[thread overview]
Message-ID: <20181106191454.22143-6-julien.grall@arm.com> (raw)
In-Reply-To: <20181106191454.22143-1-julien.grall@arm.com>

For auto-translated domain, the only way to map page to itself is the
using foreign map API. The current code does not allow mapping page from
special page (such as DOMID_XEN).

As xentrace buffer are shared using DOMID_XEN, it is not possible to use
tracing for Arm.

This could be solved by using the helper get_pg_owner(). This helper will
be able to get a reference on DOMID_XEN and therefore allow mapping for
privileged domain.

This patch replace the call to rcu_lock_domain_by_any_id() with
get_pg_owner(). For consistency, all the call to rcu_unlock_domain are
replaced by put_pg_owner().

Signed-off-by: Julien grall <julien.grall@arm.com>
---
 xen/arch/arm/mm.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
index e31b47a394..72d0285768 100644
--- a/xen/arch/arm/mm.c
+++ b/xen/arch/arm/mm.c
@@ -1249,20 +1249,20 @@ int xenmem_add_to_physmap_one(
         struct domain *od;
         p2m_type_t p2mt;
 
-        od = rcu_lock_domain_by_any_id(extra.foreign_domid);
+        od = get_pg_owner(extra.foreign_domid);
         if ( od == NULL )
             return -ESRCH;
 
         if ( od == d )
         {
-            rcu_unlock_domain(od);
+            put_pg_owner(od);
             return -EINVAL;
         }
 
         rc = xsm_map_gmfn_foreign(XSM_TARGET, d, od);
         if ( rc )
         {
-            rcu_unlock_domain(od);
+            put_pg_owner(od);
             return rc;
         }
 
@@ -1271,21 +1271,21 @@ int xenmem_add_to_physmap_one(
         page = get_page_from_gfn(od, idx, &p2mt, P2M_ALLOC);
         if ( !page )
         {
-            rcu_unlock_domain(od);
+            put_pg_owner(od);
             return -EINVAL;
         }
 
         if ( !p2m_is_ram(p2mt) )
         {
             put_page(page);
-            rcu_unlock_domain(od);
+            put_pg_owner(od);
             return -EINVAL;
         }
 
         mfn = page_to_mfn(page);
         t = (p2mt == p2m_ram_rw) ? p2m_map_foreign_rw : p2m_map_foreign_ro;
 
-        rcu_unlock_domain(od);
+        put_pg_owner(od);
         break;
     }
     case XENMAPSPACE_dev_mmio:
-- 
2.11.0


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

  parent reply	other threads:[~2018-11-06 19:15 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-06 19:14 [PATCH 0/8] xen/arm: Add xentrace support Julien Grall
2018-11-06 19:14 ` [PATCH 1/8] xen/page_alloc: Move get_pg_owner()/put_pg_owner() from x86 to common code Julien Grall
2018-11-07  9:28   ` Jan Beulich
2018-11-09 18:06     ` Julien Grall
2018-11-06 19:14 ` [PATCH 2/8] xen/arm: p2m: Introduce p2m_get_page_from_gfn Julien Grall
2018-11-15 13:31   ` Andrii Anisov
2018-11-15 13:35     ` Andrii Anisov
2018-11-15 15:22     ` Julien Grall
2018-12-20 11:20       ` Andrii Anisov
2018-11-06 19:14 ` [PATCH 3/8] xen/arm: Rename p2m_map_foreign to p2m_map_foreign_rw Julien Grall
2018-11-15 11:42   ` Andrii Anisov
2018-11-15 12:07     ` Julien Grall
2018-11-06 19:14 ` [PATCH 4/8] xen/arm: Add support for read-only foreign mappings Julien Grall
2018-11-15 11:33   ` Andrii Anisov
2018-11-15 11:40     ` Julien Grall
2018-11-15 12:02       ` Andrii Anisov
2018-11-15 12:09         ` Julien Grall
2018-11-15 13:19           ` Andrii Anisov
2018-11-15 15:05             ` Julien Grall
2018-11-15 18:44               ` Stefano Stabellini
2018-11-15 19:06                 ` Julien Grall
2018-11-15 19:48                   ` Stefano Stabellini
2018-11-15 20:20                     ` Julien Grall
2018-11-16  9:05                       ` Andrii Anisov
2018-11-16  8:37               ` Andrii Anisov
2018-11-20 15:27               ` Andrii Anisov
2018-12-20 11:21               ` Andrii Anisov
2018-11-06 19:14 ` Julien Grall [this message]
2018-11-15 13:45   ` [PATCH 5/8] xen/arm: Allow a privileged domain to map foreign page from DOMID_XEN Andrii Anisov
2018-11-06 19:14 ` [PATCH 6/8] xen/arm: Initialize trace buffer Julien Grall
2018-11-15 13:49   ` Andrii Anisov
2018-11-06 19:14 ` [PATCH 7/8] xenalyze: Build for Both ARM and x86 Platforms Julien Grall
2018-11-07 13:04   ` Wei Liu
2018-11-06 19:14 ` [PATCH 8/8] xen: Swich parameter in get_page_from_gfn to use typesafe gfn Julien Grall
2018-11-06 20:11   ` Andrew Cooper
2018-11-07  8:57     ` Paul Durrant
2018-11-07 13:08       ` Andrew Cooper
2018-11-07 13:08     ` Julien Grall
2018-11-07  9:24   ` Paul Durrant
2018-11-07 13:05     ` Julien Grall
2018-11-12 16:49   ` Andrii Anisov
2018-11-12 16:52     ` Julien Grall
2018-11-12 16:58       ` Andrii Anisov
2018-11-12 17:09         ` Julien Grall

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181106191454.22143-6-julien.grall@arm.com \
    --to=julien.grall@arm.com \
    --cc=sstabellini@kernel.org \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.