On a system without a control domain, a hardware|xenstore domain
starting xenstored shows:
common/grant_table.c:1041:d2v0 Could not find domain 32756
gnttab: error: mmap failed: Invalid argument
Could not initialize dom32756

setup_structure() does not get called without priv_domid.  Subsequent
introduce_domain() calls will fault when calling fire_special_watches().

Default priv_domid to store_domid when there is no control domain.

Fixes: e5b0a9405571 ("tools/xenstored: Auto-introduce domains")
Signed-off-by: Jason Andryuk <[email protected]>
---
I didn't verify the segfault in fire_watches() in this situation, but I
saw that previously when working on this.  Regardless of the specific
error, xenstored was not working properly without this change.
---
 tools/xenstored/domain.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/tools/xenstored/domain.c b/tools/xenstored/domain.c
index 5ce539d640..d504e9994b 100644
--- a/tools/xenstored/domain.c
+++ b/tools/xenstored/domain.c
@@ -1388,6 +1388,12 @@ void init_domains(void)
        if (store_domid == DOMID_INVALID)
                barf("Could not determine xenstore domid\n");
 
+       if (priv_domid == DOMID_INVALID)
+       {
+               priv_domid = store_domid;
+               xprintf("priv_domid defaulted to %u\n", priv_domid);
+       }
+
        snprintf(store_domain_path, sizeof(store_domain_path),
                 "/local/domain/%u", store_domid);
 
-- 
2.51.1


Reply via email to