Fix runc exec on big-endian, causing:
container_linux.go:265: starting container process caused "open /dev/pts/4294967296: no such file or directory"
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
| ... | ... |
@@ -114,7 +114,7 @@ github.com/containerd/containerd 3fa104f843ec92328912e042b767d26825f202aa |
| 114 | 114 |
github.com/containerd/fifo fbfb6a11ec671efbe94ad1c12c2e98773f19e1e6 |
| 115 | 115 |
github.com/containerd/continuity d8fb8589b0e8e85b8c8bbaa8840226d0dfeb7371 |
| 116 | 116 |
github.com/containerd/cgroups c0710c92e8b3a44681d1321dcfd1360fc5c6c089 |
| 117 |
-github.com/containerd/console 84eeaae905fa414d03e07bcd6c8d3f19e7cf180e |
|
| 117 |
+github.com/containerd/console 2748ece16665b45a47f884001d5831ec79703880 |
|
| 118 | 118 |
github.com/containerd/go-runc 4f6e87ae043f859a38255247b49c9abc262d002f |
| 119 | 119 |
github.com/containerd/typeurl f6943554a7e7e88b3c14aad190bf05932da84788 |
| 120 | 120 |
github.com/dmcgowan/go-tar go1.10 |
| ... | ... |
@@ -13,25 +13,21 @@ const ( |
| 13 | 13 |
cmdTcSet = unix.TCSETS |
| 14 | 14 |
) |
| 15 | 15 |
|
| 16 |
-func ioctl(fd, flag, data uintptr) error {
|
|
| 17 |
- if _, _, err := unix.Syscall(unix.SYS_IOCTL, fd, flag, data); err != 0 {
|
|
| 18 |
- return err |
|
| 19 |
- } |
|
| 20 |
- return nil |
|
| 21 |
-} |
|
| 22 |
- |
|
| 23 | 16 |
// unlockpt unlocks the slave pseudoterminal device corresponding to the master pseudoterminal referred to by f. |
| 24 | 17 |
// unlockpt should be called before opening the slave side of a pty. |
| 25 | 18 |
func unlockpt(f *os.File) error {
|
| 26 | 19 |
var u int32 |
| 27 |
- return ioctl(f.Fd(), unix.TIOCSPTLCK, uintptr(unsafe.Pointer(&u))) |
|
| 20 |
+ if _, _, err := unix.Syscall(unix.SYS_IOCTL, f.Fd(), unix.TIOCSPTLCK, uintptr(unsafe.Pointer(&u))); err != 0 {
|
|
| 21 |
+ return err |
|
| 22 |
+ } |
|
| 23 |
+ return nil |
|
| 28 | 24 |
} |
| 29 | 25 |
|
| 30 | 26 |
// ptsname retrieves the name of the first available pts for the given master. |
| 31 | 27 |
func ptsname(f *os.File) (string, error) {
|
| 32 |
- n, err := unix.IoctlGetInt(int(f.Fd()), unix.TIOCGPTN) |
|
| 33 |
- if err != nil {
|
|
| 28 |
+ var u uint32 |
|
| 29 |
+ if _, _, err := unix.Syscall(unix.SYS_IOCTL, f.Fd(), unix.TIOCGPTN, uintptr(unsafe.Pointer(&u))); err != 0 {
|
|
| 34 | 30 |
return "", err |
| 35 | 31 |
} |
| 36 |
- return fmt.Sprintf("/dev/pts/%d", n), nil
|
|
| 32 |
+ return fmt.Sprintf("/dev/pts/%d", u), nil
|
|
| 37 | 33 |
} |