[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v2 16/17] tools/ocaml/xenstored: don't store domU's mfn of ring page


  • To: <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Edwin Török <edvin.torok@xxxxxxxxxx>
  • Date: Tue, 11 May 2021 19:05:29 +0100
  • Authentication-results: esa1.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
  • Cc: Edwin Török <edvin.torok@xxxxxxxxxx>, "Christian Lindig" <christian.lindig@xxxxxxxxxx>, David Scott <dave@xxxxxxxxxx>, "Ian Jackson" <iwj@xxxxxxxxxxxxxx>, Wei Liu <wl@xxxxxxx>, Juergen Gross <jgross@xxxxxxxx>
  • Delivery-date: Tue, 11 May 2021 18:19:49 +0000
  • Ironport-hdrordr: A9a23:7A/JIa6E+2oilrlqOQPXwPDXdLJyesId70hD6qhwISY6TiX+rb HWoB17726TtN9/YhEdcLy7VJVoBEmskKKdgrNhWotKPjOW21dARbsKheCJrgEIWReOktK1vZ 0QC5SWY+eQMbEVt6nHCXGDYrQd/OU=
  • Ironport-sdr: Js8J1Ottk9+P26tbK96orEpViIabgTRWSOozgof7eDuwY7XKgwVCvGH0wBVhvtSCELEnFH6OJ0 fBp22c5JAdwR7wDAGrXyMhkeEsMspYxwUf93ZrkIutqa4FMP7EGaPEZJAL3D8gqS9yq/c+jxDZ Il+RjeVW592GORgriTnu20gCMwlO175x/506AASueEQwnhscllpB1n1TqbbMz94191Y6RGxQjH YTxsahTYWhchKTcXO5fsX5eaVAaRvofo9uNw5FDs6chwZVMmWlqb9+y7Dd4odwuOeQGR4oRAZf j3E=
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

This is a port of the following C xenstored commit
122b52230aa5b79d65e18b8b77094027faa2f8e2 tools/xenstore: don't store domU's mfn 
of ring page in xenstored

Backwards compat: accept a domain dump both with and without MFN.

CC: Juergen Gross <jgross@xxxxxxxx>
Signed-off-by: Edwin Török <edvin.torok@xxxxxxxxxx>
---
 tools/ocaml/xenstored/domain.ml  |  7 ++-----
 tools/ocaml/xenstored/domains.ml |  6 +++---
 tools/ocaml/xenstored/process.ml | 16 +++++-----------
 3 files changed, 10 insertions(+), 19 deletions(-)

diff --git a/tools/ocaml/xenstored/domain.ml b/tools/ocaml/xenstored/domain.ml
index 82d7b1a7ef..960ebef218 100644
--- a/tools/ocaml/xenstored/domain.ml
+++ b/tools/ocaml/xenstored/domain.ml
@@ -22,7 +22,6 @@ let warn  fmt = Logging.warn  "domain" fmt
 type t =
 {
        id: Xenctrl.domid;
-       mfn: nativeint;
        interface: Xenmmap.t;
        eventchn: Event.t;
        mutable remote_port: int;
@@ -40,7 +39,6 @@ type t =
 let is_dom0 d = d.id = 0
 let get_id domain = domain.id
 let get_interface d = d.interface
-let get_mfn d = d.mfn
 let get_remote_port d = d.remote_port
 let get_port d = d.port
 
@@ -61,7 +59,7 @@ let string_of_port = function
 | Some x -> string_of_int (Xeneventchn.to_int x)
 
 let dump d chan =
-       fprintf chan "dom,%d,%nd,%d\n" d.id d.mfn d.remote_port
+       fprintf chan "dom,%d,%d\n" d.id d.remote_port
 
 let notify dom = match dom.port with
 | None ->
@@ -87,9 +85,8 @@ let close dom =
        Xenmmap.unmap dom.interface;
        ()
 
-let make id mfn remote_port interface eventchn = {
+let make id remote_port interface eventchn = {
        id = id;
-       mfn = mfn;
        remote_port = remote_port;
        interface = interface;
        eventchn = eventchn;
diff --git a/tools/ocaml/xenstored/domains.ml b/tools/ocaml/xenstored/domains.ml
index d9cb693751..0dfeed193a 100644
--- a/tools/ocaml/xenstored/domains.ml
+++ b/tools/ocaml/xenstored/domains.ml
@@ -124,10 +124,10 @@ let cleanup doms =
 let resume _doms _domid =
        ()
 
-let create doms domid mfn port =
+let create doms domid port =
        let mapping = Gnt.(Gnttab.map_exn doms.gnttab { domid; ref = xenstore} 
true) in
        let interface = Gnt.Gnttab.Local_mapping.to_pages doms.gnttab mapping in
-       let dom = Domain.make domid mfn port interface doms.eventchn in
+       let dom = Domain.make domid port interface doms.eventchn in
        Hashtbl.add doms.table domid dom;
        Domain.bind_interdomain dom;
        dom
@@ -147,7 +147,7 @@ let create0 doms =
                        port, interface
                )
                in
-       let dom = Domain.make 0 Nativeint.zero port interface doms.eventchn in
+       let dom = Domain.make 0 port interface doms.eventchn in
        Hashtbl.add doms.table 0 dom;
        Domain.bind_interdomain dom;
        Domain.notify dom;
diff --git a/tools/ocaml/xenstored/process.ml b/tools/ocaml/xenstored/process.ml
index 13b7153536..890970b8c5 100644
--- a/tools/ocaml/xenstored/process.ml
+++ b/tools/ocaml/xenstored/process.ml
@@ -235,10 +235,6 @@ let do_debug con t _domains cons data =
        | "watches" :: _ ->
                let watches = Connections.debug cons in
                Some (watches ^ "\000")
-       | "mfn" :: domid :: _ ->
-               let domid = int_of_string domid in
-               let con = Connections.find_domain cons domid in
-               may (fun dom -> Printf.sprintf "%nd\000" (Domain.get_mfn dom)) 
(Connection.get_domain con)
        | _ -> None
        with _ -> None
 
@@ -554,15 +550,13 @@ let do_introduce con t domains cons data =
        let dom =
                if Domains.exist domains domid then begin
                        let edom = Domains.find domains domid in
-                       if (Domain.get_mfn edom) = mfn && 
(Connections.find_domain cons domid) != con then begin
-                               (* Use XS_INTRODUCE for recreating the xenbus 
event-channel. *)
-                               edom.remote_port <- port;
-                               Domain.bind_interdomain edom;
-                       end;
+                       (* Use XS_INTRODUCE for recreating the xenbus 
event-channel. *)
+                       edom.remote_port <- port;
+                       Domain.bind_interdomain edom;
                        edom
                end
                else try
-                       let ndom = Domains.create domains domid mfn port in
+                       let ndom = Domains.create domains domid port in
                        Connections.add_domain cons ndom;
                        Connections.fire_spec_watches (Transaction.get_root t) 
cons Store.Path.introduce_domain;
                        ndom
@@ -571,7 +565,7 @@ let do_introduce con t domains cons data =
                         Logging.debug "process" "do_introduce: %s (%s)" 
(Printexc.to_string e) bt;
                         raise Invalid_Cmd_Args
        in
-       if (Domain.get_remote_port dom) <> port || (Domain.get_mfn dom) <> mfn 
then
+       if (Domain.get_remote_port dom) <> port then
                raise Domain_not_match
 
 let do_release con t domains cons data =
-- 
2.25.1




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.