]> xenbits.xensource.com Git - xen.git/commitdiff
tools/ocaml/libs/xb: Do not crash after xenbus is unmapped
authorEdwin Török <edvin.torok@citrix.com>
Fri, 15 Jan 2021 18:23:10 +0000 (18:23 +0000)
committerIan Jackson <iwj@xenproject.org>
Fri, 19 Mar 2021 13:46:44 +0000 (13:46 +0000)
Xenmmap.unmap sets the address to MAP_FAILED in xenmmap_stubs.c.  If due to a
bug there were still references to the Xenbus and we attempt to use it then we
crash.  Raise an exception instead of crashing.

Signed-off-by: Edwin Török <edvin.torok@citrix.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
(cherry picked from commit 5e317896342d553f0b55f72948bbf93a0f1147d3)

tools/ocaml/libs/xb/xs_ring_stubs.c

index 7537a239495f25506140274f17f05434bf70362e..7a91fdee7548dbe7745690faf8cab385c22e9f6a 100644 (file)
@@ -32,6 +32,7 @@
 #include <caml/fail.h>
 #include <caml/callback.h>
 
+#include <sys/mman.h>
 #include "mmap_stubs.h"
 
 #define GET_C_STRUCT(a) ((struct mmap_interface *) a)
@@ -166,6 +167,8 @@ CAMLprim value ml_interface_set_server_features(value interface, value v)
 {
        CAMLparam2(interface, v);
        struct xenstore_domain_interface *intf = GET_C_STRUCT(interface)->addr;
+       if (intf == (void*)MAP_FAILED)
+               caml_failwith("Interface closed");
 
        intf->server_features = Int_val(v);