@@ -83,6 +83,7 @@ allow dom0_t xen_t:version {
xen_extraversion xen_compile_info xen_capabilities
xen_changeset xen_pagesize xen_guest_handle xen_commandline
extraversion capabilities changeset pagesize guest_handle commandline
+ build_id
};
allow dom0_t xen_t:mmu memorymap;
@@ -474,6 +474,10 @@ DO(version_op)(unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) arg,
ptr = saved_cmdline;
break;
+ case XEN_VERSION_build_id:
+ rc = xen_build_id(&ptr, &sz);
+ break;
+
default:
rc = -ENOSYS;
}
@@ -157,6 +157,9 @@ DEFINE_XEN_GUEST_HANDLE(xen_version_op_val_t);
/* arg = char[]. Contains NUL terminated utf-8 string. */
#define XEN_VERSION_commandline 9
+/* arg = void. Contains binary value of hypervisor build-id. */
+#define XEN_VERSION_build_id 10
+
#endif /* __XEN_PUBLIC_VERSION_H__ */
/*
@@ -1697,6 +1697,9 @@ static int flask_version_op (uint32_t op)
case XEN_VERSION_commandline:
return avc_has_perm(dsid, SECINITSID_XEN, SECCLASS_VERSION,
VERSION__COMMANDLINE, NULL);
+ case XEN_VERSION_build_id:
+ return avc_has_perm(dsid, SECINITSID_XEN, SECCLASS_VERSION,
+ VERSION__BUILD_ID, NULL);
default:
return -EPERM;
}
@@ -540,4 +540,6 @@ class version
guest_handle
# Xen command line.
commandline
+# Build id of the hypervisor
+ build_id
}