From 10560afb540b783da568aebe83d0f782e46bb673 Mon Sep 17 00:00:00 2001 From: Alberto Donizetti Date: Thu, 20 Oct 2016 11:24:51 +0200 Subject: runtime/debug: avoid overflow in SetMaxThreads Fixes #16076 Change-Id: I91fa87b642592ee4604537dd8c3197cd61ec8b31 Reviewed-on: https://go-review.googlesource.com/31516 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- src/runtime/proc.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/runtime/proc.go') diff --git a/src/runtime/proc.go b/src/runtime/proc.go index f68a189997..9fc24e3ae3 100644 --- a/src/runtime/proc.go +++ b/src/runtime/proc.go @@ -4294,7 +4294,11 @@ func runqsteal(_p_, p2 *p, stealRunNextG bool) *g { func setMaxThreads(in int) (out int) { lock(&sched.lock) out = int(sched.maxmcount) - sched.maxmcount = int32(in) + if in > 0x7fffffff { // MaxInt32 + sched.maxmcount = 0x7fffffff + } else { + sched.maxmcount = int32(in) + } checkmcount() unlock(&sched.lock) return -- cgit v1.3-5-g9baa