summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/os/zone.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/os/zone.c')
-rw-r--r--usr/src/uts/common/os/zone.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/usr/src/uts/common/os/zone.c b/usr/src/uts/common/os/zone.c
index 50048453c1..968cb3b12d 100644
--- a/usr/src/uts/common/os/zone.c
+++ b/usr/src/uts/common/os/zone.c
@@ -3408,7 +3408,13 @@ zone_create(const char *zone_name, const char *zone_root,
*/
zone->zone_match = match;
if (is_system_labeled() && !(zone->zone_flags & ZF_IS_SCRATCH)) {
- error = zone_set_label(zone, label, doi);
+ /* Fail if requested to set doi to anything but system's doi */
+ if (doi != 0 && doi != default_doi) {
+ zone_free(zone);
+ return (set_errno(EINVAL));
+ }
+ /* Always apply system's doi to the zone */
+ error = zone_set_label(zone, label, default_doi);
if (error != 0) {
zone_free(zone);
return (set_errno(error));