]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: don't read /dev/random on Plan 9
authorDavid du Colombier <0intro@gmail.com>
Sat, 5 Apr 2025 18:35:12 +0000 (20:35 +0200)
committerDavid du Colombier <0intro@gmail.com>
Fri, 25 Apr 2025 21:43:43 +0000 (14:43 -0700)
In CL 656755, the readRandom function was modified
to read an integer from /dev/random.

However, on Plan 9, /dev/random can only return
a few hundred bits a second.

The issue is that readRandom is called by randinit,
which is called at the creation of Go processes.

Consequently, it lead the Go programs to be very
slow on Plan 9.

This change reverts the change done in CL 656755
to make the readRandom function always returning 0
on Plan 9.

Change-Id: Ibe1bf7e4c8cbc82998e4f5e1331f5e29a047c4fc
Cq-Include-Trybots: luci.golang.try:gotip-plan9-arm

Reviewed-on: https://go-review.googlesource.com/c/go/+/663195
Reviewed-by: Michael Pratt <mpratt@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Richard Miller <millerresearch@gmail.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
src/runtime/os_plan9.go

index 6ff15c2236d9804cd0753c63f5d6de89c25c3965..a0ad9060c5f9e61021548c74658f4e84e906d135 100644 (file)
@@ -358,15 +358,13 @@ func crash() {
        *(*int)(nil) = 0
 }
 
+// Don't read from /dev/random, since this device can only
+// return a few hundred bits a second and would slow creation
+// of Go processes down significantly.
+//
 //go:nosplit
 func readRandom(r []byte) int {
-       fd := open(&randomDev[0], _OREAD|_OCEXEC, 0)
-       if fd < 0 {
-               fatal("cannot open /dev/random")
-       }
-       n := int(read(fd, unsafe.Pointer(&r[0]), int32(len(r))))
-       closefd(fd)
-       return n
+       return 0
 }
 
 func initsig(preinit bool) {