diff --git a/src/crypto/rand/rand_linux.go b/src/crypto/rand/rand_linux.go index 8cb59c75dff..7d6d9e8a094 100644 --- a/src/crypto/rand/rand_linux.go +++ b/src/crypto/rand/rand_linux.go @@ -5,7 +5,7 @@ package rand import ( - "internal/syscall" + "internal/syscall/unix" "sync" ) @@ -25,7 +25,7 @@ func pickStrategy() { // - the machine has no entropy available (early boot + no hardware // entropy source?) and we want to avoid blocking later. var buf [1]byte - n, err := syscall.GetRandom(buf[:], syscall.GRND_NONBLOCK) + n, err := unix.GetRandom(buf[:], unix.GRND_NONBLOCK) useSyscall = n == 1 && err == nil } @@ -34,6 +34,6 @@ func getRandomLinux(p []byte) (ok bool) { if !useSyscall { return false } - n, err := syscall.GetRandom(p, 0) + n, err := unix.GetRandom(p, 0) return n == len(p) && err == nil } diff --git a/src/go/build/deps_test.go b/src/go/build/deps_test.go index 11e8ba8b47b..16336d08f4f 100644 --- a/src/go/build/deps_test.go +++ b/src/go/build/deps_test.go @@ -279,7 +279,7 @@ var pkgDeps = map[string][]string{ // Random byte, number generation. // This would be part of core crypto except that it imports // math/big, which imports fmt. - "crypto/rand": {"L4", "CRYPTO", "OS", "math/big", "syscall", "internal/syscall"}, + "crypto/rand": {"L4", "CRYPTO", "OS", "math/big", "syscall", "internal/syscall/unix"}, // Mathematical crypto: dependencies on fmt (L4) and math/big. // We could avoid some of the fmt, but math/big imports fmt anyway. diff --git a/src/internal/syscall/getrandom_linux.go b/src/internal/syscall/unix/getrandom_linux.go similarity index 87% rename from src/internal/syscall/getrandom_linux.go rename to src/internal/syscall/unix/getrandom_linux.go index 36d5a1ccb0c..7388271ef19 100644 --- a/src/internal/syscall/getrandom_linux.go +++ b/src/internal/syscall/unix/getrandom_linux.go @@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -package syscall +package unix import ( "runtime" "sync/atomic" - stdsyscall "syscall" + "syscall" "unsafe" ) @@ -36,20 +36,20 @@ const ( // See https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c6e9d6f38894798696f23c8084ca7edbf16ee895 func GetRandom(p []byte, flags GetRandomFlag) (n int, err error) { if randomTrap == 0 { - return 0, stdsyscall.ENOSYS + return 0, syscall.ENOSYS } if len(p) == 0 { return 0, nil } if atomic.LoadInt32(&randomUnsupported) != 0 { - return 0, stdsyscall.ENOSYS + return 0, syscall.ENOSYS } - r1, _, errno := stdsyscall.Syscall(randomTrap, + r1, _, errno := syscall.Syscall(randomTrap, uintptr(unsafe.Pointer(&p[0])), uintptr(len(p)), uintptr(flags)) if errno != 0 { - if errno == stdsyscall.ENOSYS { + if errno == syscall.ENOSYS { atomic.StoreInt32(&randomUnsupported, 1) } return 0, errno