mirror of
https://github.com/golang/go
synced 2024-11-15 03:30:37 -07:00
syscall: Setrlimit: always clean rlimitNofileCache
Since the introduction of origRlimitNofileCache in CL 476097 the only way to disable restoring RLIMIT_NOFILE before calling execve syscall (os.StartProcess etc) is this: var r syscall.Rlimit syscall.Getrlimit(syscall.RLIMIT_NOFILE, &r) syscall.Setrlimit(syscall.RLIMIT_NOFILE, &r) The problem is, this only works when setrlimit syscall succeeds, which is not possible in some scenarios. Let's assume that if a user calls syscall.Setrlimit, they unconditionally want to disable restoring the original rlimit. For #66797. Change-Id: I20d0365df4bd6a5c3cc8c22b0c0db87a25b52746 Reviewed-on: https://go-review.googlesource.com/c/go/+/588076 Run-TryBot: Kirill Kolyshkin <kolyshkin@gmail.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Reviewed-by: Ian Lance Taylor <iant@google.com> Auto-Submit: Ian Lance Taylor <iant@google.com> TryBot-Bypass: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
5c7d774538
commit
22a80e78ea
@ -50,11 +50,10 @@ func init() {
|
||||
}
|
||||
|
||||
func Setrlimit(resource int, rlim *Rlimit) error {
|
||||
err := setrlimit(resource, rlim)
|
||||
if err == nil && resource == RLIMIT_NOFILE {
|
||||
if resource == RLIMIT_NOFILE {
|
||||
// Store nil in origRlimitNofile to tell StartProcess
|
||||
// to not adjust the rlimit in the child process.
|
||||
origRlimitNofile.Store(nil)
|
||||
}
|
||||
return err
|
||||
return setrlimit(resource, rlim)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user