Browse code

Remove error return from RootPair

There is no case which would resolve in this error. The root user always exists, and if the id maps are empty, the default value of 0 is correct.

Signed-off-by: Daniel Nephin <dnephin@docker.com>

Daniel Nephin authored on 2017/06/01 06:56:23
Showing 14 changed files
... ...
@@ -375,7 +375,7 @@ func (daemon *Daemon) CopyOnBuild(cID, destPath, srcRoot, srcPath string, decomp
375 375
 
376 376
 	destExists := true
377 377
 	destDir := false
378
-	rootIDs, _ := daemon.idMappings.RootPair()
378
+	rootIDs := daemon.idMappings.RootPair()
379 379
 
380 380
 	// Work in daemon-local OS specific file paths
381 381
 	destPath = filepath.FromSlash(destPath)
... ...
@@ -109,7 +109,7 @@ func (daemon *Daemon) setupIpcDirs(c *container.Container) error {
109 109
 		}
110 110
 		c.ShmPath = "/dev/shm"
111 111
 	} else {
112
-		rootIDs, _ := daemon.idMappings.RootPair()
112
+		rootIDs := daemon.idMappings.RootPair()
113 113
 		if !c.HasMountFor("/dev/shm") {
114 114
 			shmPath, err := c.ShmResourcePath()
115 115
 			if err != nil {
... ...
@@ -147,7 +147,7 @@ func (daemon *Daemon) setupSecretDir(c *container.Container) (setupErr error) {
147 147
 	logrus.Debugf("secrets: setting up secret dir: %s", localMountPath)
148 148
 
149 149
 	// retrieve possible remapped range start for root UID, GID
150
-	rootIDs, _ := daemon.idMappings.RootPair()
150
+	rootIDs := daemon.idMappings.RootPair()
151 151
 	// create tmpfs
152 152
 	if err := idtools.MkdirAllAndChown(localMountPath, 0700, rootIDs); err != nil {
153 153
 		return errors.Wrap(err, "error creating secret local mount path")
... ...
@@ -232,7 +232,7 @@ func (daemon *Daemon) setupConfigDir(c *container.Container) (setupErr error) {
232 232
 	logrus.Debugf("configs: setting up config dir: %s", localPath)
233 233
 
234 234
 	// retrieve possible remapped range start for root UID, GID
235
-	rootIDs, _ := daemon.idMappings.RootPair()
235
+	rootIDs := daemon.idMappings.RootPair()
236 236
 	// create tmpfs
237 237
 	if err := idtools.MkdirAllAndChown(localPath, 0700, rootIDs); err != nil {
238 238
 		return errors.Wrap(err, "error creating config dir")
... ...
@@ -117,10 +117,7 @@ func (daemon *Daemon) create(params types.ContainerCreateConfig, managed bool) (
117 117
 		return nil, err
118 118
 	}
119 119
 
120
-	rootIDs, err := daemon.idMappings.RootPair()
121
-	if err != nil {
122
-		return nil, err
123
-	}
120
+	rootIDs := daemon.idMappings.RootPair()
124 121
 	if err := idtools.MkdirAndChown(container.Root, 0700, rootIDs); err != nil {
125 122
 		return nil, err
126 123
 	}
... ...
@@ -22,7 +22,7 @@ func (daemon *Daemon) createContainerPlatformSpecificSettings(container *contain
22 22
 	}
23 23
 	defer daemon.Unmount(container)
24 24
 
25
-	rootIDs, _ := daemon.idMappings.RootPair()
25
+	rootIDs := daemon.idMappings.RootPair()
26 26
 	if err := container.SetupWorkingDirectory(rootIDs); err != nil {
27 27
 		return err
28 28
 	}
... ...
@@ -527,11 +527,7 @@ func NewDaemon(config *config.Config, registryService registry.Service, containe
527 527
 	if err != nil {
528 528
 		return nil, err
529 529
 	}
530
-	rootIDs, err := idMappings.RootPair()
531
-	if err != nil {
532
-		return nil, err
533
-	}
534
-
530
+	rootIDs := idMappings.RootPair()
535 531
 	if err := setupDaemonProcess(config); err != nil {
536 532
 		return nil, err
537 533
 	}
... ...
@@ -994,7 +990,7 @@ func prepareTempDir(rootDir string, rootIDs idtools.IDPair) (string, error) {
994 994
 }
995 995
 
996 996
 func (daemon *Daemon) setupInitLayer(initPath string) error {
997
-	rootIDs, _ := daemon.idMappings.RootPair()
997
+	rootIDs := daemon.idMappings.RootPair()
998 998
 	return initlayer.Setup(initPath, rootIDs)
999 999
 }
1000 1000
 
... ...
@@ -1157,14 +1153,5 @@ func CreateDaemonRoot(config *config.Config) error {
1157 1157
 	if err != nil {
1158 1158
 		return err
1159 1159
 	}
1160
-	rootIDs, err := idMappings.RootPair()
1161
-	if err != nil {
1162
-		return err
1163
-	}
1164
-
1165
-	if err := setupDaemonRoot(config, realRoot, rootIDs); err != nil {
1166
-		return err
1167
-	}
1168
-
1169
-	return nil
1160
+	return setupDaemonRoot(config, realRoot, idMappings.RootPair())
1170 1161
 }
... ...
@@ -28,10 +28,7 @@ func Init(home string, options []string, uidMaps, gidMaps []idtools.IDMap) (grap
28 28
 		home:       home,
29 29
 		idMappings: idtools.NewIDMappingsFromMaps(uidMaps, gidMaps),
30 30
 	}
31
-	rootIDs, err := d.idMappings.RootPair()
32
-	if err != nil {
33
-		return nil, err
34
-	}
31
+	rootIDs := d.idMappings.RootPair()
35 32
 	if err := idtools.MkdirAllAndChown(home, 0700, rootIDs); err != nil {
36 33
 		return nil, err
37 34
 	}
... ...
@@ -79,10 +76,7 @@ func (d *Driver) Create(id, parent string, opts *graphdriver.CreateOpts) error {
79 79
 	}
80 80
 
81 81
 	dir := d.dir(id)
82
-	rootIDs, err := d.idMappings.RootPair()
83
-	if err != nil {
84
-		return err
85
-	}
82
+	rootIDs := d.idMappings.RootPair()
86 83
 	if err := idtools.MkdirAllAndChown(filepath.Dir(dir), 0700, rootIDs); err != nil {
87 84
 		return err
88 85
 	}
... ...
@@ -72,7 +72,7 @@ func (daemon *Daemon) SystemInfo() (*types.Info, error) {
72 72
 	if selinuxEnabled() {
73 73
 		securityOptions = append(securityOptions, "name=selinux")
74 74
 	}
75
-	rootIDs, _ := daemon.idMappings.RootPair()
75
+	rootIDs := daemon.idMappings.RootPair()
76 76
 	if rootIDs.UID != 0 || rootIDs.GID != 0 {
77 77
 		securityOptions = append(securityOptions, "name=userns")
78 78
 	}
... ...
@@ -611,8 +611,7 @@ func (daemon *Daemon) populateCommonSpec(s *specs.Spec, c *container.Container)
611 611
 		Path:     c.BaseFS,
612 612
 		Readonly: c.HostConfig.ReadonlyRootfs,
613 613
 	}
614
-	rootIDs, _ := daemon.idMappings.RootPair()
615
-	if err := c.SetupWorkingDirectory(rootIDs); err != nil {
614
+	if err := c.SetupWorkingDirectory(daemon.idMappings.RootPair()); err != nil {
616 615
 		return err
617 616
 	}
618 617
 	cwd := c.Config.WorkingDir
... ...
@@ -130,8 +130,7 @@ func (daemon *Daemon) populateCommonSpec(s *specs.Spec, c *container.Container)
130 130
 		Path:     filepath.Dir(c.BaseFS),
131 131
 		Readonly: c.HostConfig.ReadonlyRootfs,
132 132
 	}
133
-	rootIDs, _ := daemon.idMappings.RootPair()
134
-	if err := c.SetupWorkingDirectory(rootIDs); err != nil {
133
+	if err := c.SetupWorkingDirectory(daemon.idMappings.RootPair()); err != nil {
135 134
 		return err
136 135
 	}
137 136
 	cwd := c.Config.WorkingDir
... ...
@@ -54,8 +54,7 @@ func (daemon *Daemon) setupMounts(c *container.Container) ([]container.Mount, er
54 54
 			return nil
55 55
 		}
56 56
 
57
-		rootIDs, _ := daemon.idMappings.RootPair()
58
-		path, err := m.Setup(c.MountLabel, rootIDs, checkfunc)
57
+		path, err := m.Setup(c.MountLabel, daemon.idMappings.RootPair(), checkfunc)
59 58
 		if err != nil {
60 59
 			return nil, err
61 60
 		}
... ...
@@ -85,7 +84,7 @@ func (daemon *Daemon) setupMounts(c *container.Container) ([]container.Mount, er
85 85
 	// if we are going to mount any of the network files from container
86 86
 	// metadata, the ownership must be set properly for potential container
87 87
 	// remapped root (user namespaces)
88
-	rootIDs, _ := daemon.idMappings.RootPair()
88
+	rootIDs := daemon.idMappings.RootPair()
89 89
 	for _, mount := range netMounts {
90 90
 		if err := os.Chown(mount.Source, rootIDs.UID, rootIDs.GID); err != nil {
91 91
 			return nil, err
... ...
@@ -16,6 +16,5 @@ func (daemon *Daemon) ContainerCreateWorkdir(cID string) error {
16 16
 		return err
17 17
 	}
18 18
 	defer daemon.Unmount(container)
19
-	rootIDs, _ := daemon.idMappings.RootPair()
20
-	return container.SetupWorkingDirectory(rootIDs)
19
+	return container.SetupWorkingDirectory(daemon.idMappings.RootPair())
21 20
 }
... ...
@@ -803,10 +803,7 @@ func Unpack(decompressedArchive io.Reader, dest string, options *TarOptions) err
803 803
 
804 804
 	var dirs []*tar.Header
805 805
 	idMappings := idtools.NewIDMappingsFromMaps(options.UIDMaps, options.GIDMaps)
806
-	rootIDs, err := idMappings.RootPair()
807
-	if err != nil {
808
-		return err
809
-	}
806
+	rootIDs := idMappings.RootPair()
810 807
 	whiteoutConverter := getWhiteoutConverter(options.WhiteoutFormat)
811 808
 
812 809
 	// Iterate through the files in the archive.
... ...
@@ -1008,10 +1005,7 @@ func (archiver *Archiver) CopyWithTar(src, dst string) error {
1008 1008
 	// if this archiver is set up with ID mapping we need to create
1009 1009
 	// the new destination directory with the remapped root UID/GID pair
1010 1010
 	// as owner
1011
-	rootIDs, err := archiver.IDMappings.RootPair()
1012
-	if err != nil {
1013
-		return err
1014
-	}
1011
+	rootIDs := archiver.IDMappings.RootPair()
1015 1012
 	// Create dst, copy src's content into it
1016 1013
 	logrus.Debugf("Creating dest directory: %s", dst)
1017 1014
 	if err := idtools.MkdirAllAndChownNew(dst, 0755, rootIDs); err != nil {
... ...
@@ -47,10 +47,7 @@ func untarHandler(tarArchive io.Reader, dest string, options *archive.TarOptions
47 47
 	}
48 48
 
49 49
 	idMappings := idtools.NewIDMappingsFromMaps(options.UIDMaps, options.GIDMaps)
50
-	rootIDs, err := idMappings.RootPair()
51
-	if err != nil {
52
-		return err
53
-	}
50
+	rootIDs := idMappings.RootPair()
54 51
 
55 52
 	dest = filepath.Clean(dest)
56 53
 	if _, err := os.Stat(dest); os.IsNotExist(err) {
... ...
@@ -158,19 +158,19 @@ func NewIDMappingsFromMaps(uids []IDMap, gids []IDMap) *IDMappings {
158 158
 	return &IDMappings{uids: uids, gids: gids}
159 159
 }
160 160
 
161
-// RootPair returns a uid and gid pair for the root user
162
-func (i *IDMappings) RootPair() (IDPair, error) {
163
-	uid, gid, err := GetRootUIDGID(i.uids, i.gids)
164
-	return IDPair{UID: uid, GID: gid}, err
161
+// RootPair returns a uid and gid pair for the root user. The error is ignored
162
+// because a root user always exists, and the defaults are correct when the uid
163
+// and gid maps are empty.
164
+func (i *IDMappings) RootPair() IDPair {
165
+	uid, gid, _ := GetRootUIDGID(i.uids, i.gids)
166
+	return IDPair{UID: uid, GID: gid}
165 167
 }
166 168
 
167 169
 // ToHost returns the host UID and GID for the container uid, gid.
168 170
 // Remapping is only performed if the ids aren't already the remapped root ids
169 171
 func (i *IDMappings) ToHost(pair IDPair) (IDPair, error) {
170
-	target, err := i.RootPair()
171
-	if err != nil {
172
-		return IDPair{}, err
173
-	}
172
+	var err error
173
+	target := i.RootPair()
174 174
 
175 175
 	if pair.UID != target.UID {
176 176
 		target.UID, err = toHost(pair.UID, i.uids)