devices: filter /dev/console out of the node list
Fixed getDeviceNodes() so it won't add /dev/console to the device node list. This fixes an issue where containers wouldn't start if /dev/console is a pts (which is the case when running docker inside docker), because devpts inodes are special and cannot be created with mknod: attempting to open the result of doing so will return EIO. Since later libcontainer would attempt to open the file to mount --bind over it and fail because of the EIO error, the container wouldn't start if the /dev/console was a pts, which is the case inside a docker that was started from a pts. getDeviceNodes() already filters pts so this change is consistent with the current behavior. Signed-off-by: Alejandro Ojeda <alex@x3y.org>
This commit is contained in:
parent
aab3f6d17f
commit
863a486d81
|
@ -115,14 +115,19 @@ func getDeviceNodes(path string) ([]*Device, error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
device, err := GetDevice(filepath.Join(path, f.Name()), "rwm")
|
switch f.Name() {
|
||||||
if err != nil {
|
case "console":
|
||||||
if err == ErrNotADeviceNode {
|
continue
|
||||||
continue
|
default:
|
||||||
|
device, err := GetDevice(filepath.Join(path, f.Name()), "rwm")
|
||||||
|
if err != nil {
|
||||||
|
if err == ErrNotADeviceNode {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
}
|
}
|
||||||
return nil, err
|
out = append(out, device)
|
||||||
}
|
}
|
||||||
out = append(out, device)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return out, nil
|
return out, nil
|
||||||
|
|
Loading…
Reference in New Issue