From bb3e95dfdcaf068559c61711627ae2703ea25755 Mon Sep 17 00:00:00 2001 From: Derek McGowan Date: Wed, 11 Dec 2024 21:17:50 -0800 Subject: [PATCH] Update archive to use unix.Mknod directly Signed-off-by: Derek McGowan --- pkg/archive/archive_linux_test.go | 3 +-- pkg/archive/archive_unix.go | 3 +-- pkg/archive/archive_unix_test.go | 7 +++---- pkg/archive/dev_freebsd.go | 7 +++++++ pkg/archive/dev_unix.go | 9 +++++++++ 5 files changed, 21 insertions(+), 8 deletions(-) create mode 100644 pkg/archive/dev_freebsd.go create mode 100644 pkg/archive/dev_unix.go diff --git a/pkg/archive/archive_linux_test.go b/pkg/archive/archive_linux_test.go index c823e09a8c..5975f54c69 100644 --- a/pkg/archive/archive_linux_test.go +++ b/pkg/archive/archive_linux_test.go @@ -9,7 +9,6 @@ import ( "syscall" "testing" - "github.com/docker/docker/pkg/system" "github.com/google/go-cmp/cmp/cmpopts" "github.com/moby/sys/userns" "golang.org/x/sys/unix" @@ -55,7 +54,7 @@ func setupOverlayTestDir(t *testing.T, src string) { err = os.Mkdir(filepath.Join(src, "d3"), 0o700) assert.NilError(t, err) - err = system.Mknod(filepath.Join(src, "d3", "f1"), unix.S_IFCHR, 0) + err = unix.Mknod(filepath.Join(src, "d3", "f1"), unix.S_IFCHR, 0) assert.NilError(t, err) } diff --git a/pkg/archive/archive_unix.go b/pkg/archive/archive_unix.go index f559a30565..f67613b7ca 100644 --- a/pkg/archive/archive_unix.go +++ b/pkg/archive/archive_unix.go @@ -12,7 +12,6 @@ import ( "syscall" "github.com/docker/docker/pkg/idtools" - "github.com/docker/docker/pkg/system" "golang.org/x/sys/unix" ) @@ -109,7 +108,7 @@ func handleTarTypeBlockCharFifo(hdr *tar.Header, path string) error { mode |= unix.S_IFIFO } - return system.Mknod(path, mode, int(system.Mkdev(hdr.Devmajor, hdr.Devminor))) + return mknod(path, mode, unix.Mkdev(uint32(hdr.Devmajor), uint32(hdr.Devminor))) } func handleLChmod(hdr *tar.Header, path string, hdrInfo os.FileInfo) error { diff --git a/pkg/archive/archive_unix_test.go b/pkg/archive/archive_unix_test.go index b273a532df..efa50004dd 100644 --- a/pkg/archive/archive_unix_test.go +++ b/pkg/archive/archive_unix_test.go @@ -14,7 +14,6 @@ import ( "syscall" "testing" - "github.com/docker/docker/pkg/system" "github.com/moby/sys/userns" "golang.org/x/sys/unix" "gotest.tools/v3/assert" @@ -199,11 +198,11 @@ func TestTarWithBlockCharFifo(t *testing.T) { err = os.WriteFile(filepath.Join(origin, "1"), []byte("hello world"), 0o700) assert.NilError(t, err) - err = system.Mknod(filepath.Join(origin, "2"), unix.S_IFBLK, int(system.Mkdev(int64(12), int64(5)))) + err = mknod(filepath.Join(origin, "2"), unix.S_IFBLK, unix.Mkdev(uint32(12), uint32(5))) assert.NilError(t, err) - err = system.Mknod(filepath.Join(origin, "3"), unix.S_IFCHR, int(system.Mkdev(int64(12), int64(5)))) + err = mknod(filepath.Join(origin, "3"), unix.S_IFCHR, unix.Mkdev(uint32(12), uint32(5))) assert.NilError(t, err) - err = system.Mknod(filepath.Join(origin, "4"), unix.S_IFIFO, int(system.Mkdev(int64(12), int64(5)))) + err = mknod(filepath.Join(origin, "4"), unix.S_IFIFO, unix.Mkdev(uint32(12), uint32(5))) assert.NilError(t, err) dest, err := os.MkdirTemp("", "docker-test-tar-hardlink-dest") diff --git a/pkg/archive/dev_freebsd.go b/pkg/archive/dev_freebsd.go new file mode 100644 index 0000000000..a67ca43be6 --- /dev/null +++ b/pkg/archive/dev_freebsd.go @@ -0,0 +1,7 @@ +//go:build freebsd + +package archive // import "github.com/docker/docker/pkg/archive" + +import "golang.org/x/sys/unix" + +var mknod = unix.Mknod diff --git a/pkg/archive/dev_unix.go b/pkg/archive/dev_unix.go new file mode 100644 index 0000000000..9527982cc0 --- /dev/null +++ b/pkg/archive/dev_unix.go @@ -0,0 +1,9 @@ +//go:build !windows && !freebsd + +package archive // import "github.com/docker/docker/pkg/archive" + +import "golang.org/x/sys/unix" + +func mknod(path string, mode uint32, dev uint64) error { + return unix.Mknod(path, mode, int(dev)) +}