]> Cypherpunks repositories - gostls13.git/commit
syscall: use clone3 syscall with CLONE_NEWTIME
authorTobias Klauser <tklauser@distanz.ch>
Wed, 8 Mar 2023 11:49:10 +0000 (12:49 +0100)
committerGopher Robot <gobot@golang.org>
Mon, 13 Mar 2023 19:26:17 +0000 (19:26 +0000)
commit7c019c62fb32db42e946b15763217518a521404e
treedd8fe777935c6082a9419d5316e61e05ccfb685b
parent778627f33187d874440ce1f353bb4d7bce55304a
syscall: use clone3 syscall with CLONE_NEWTIME

CLONE_NEWTIME can only be used with the clone3 and unshare system calls,
see https://github.com/torvalds/linux/commit/769071ac9f20b6a447410c7eaa55d1a5233ef40c:

> All available clone flags have been used, so CLONE_NEWTIME uses the highest
> bit of CSIGNAL. It means that it can be used only with the unshare() and
> the clone3() system calls.

The clone3 syscall was added in Linux kernel version 5.3 and
CLONE_NEWTIME was added in version 5.6. However, it was non-functional
until version 6.3 (and stable versions with the corresponding fix [1]).

[1] https://lore.kernel.org/lkml/20230308105126.10107-1-tklauser@distanz.ch/

In case CLONE_NEWTIME is set in SysProcAttr.Cloneflags on an unsupported
kernel version, the fork/exec call will fail.

Fixes #49779

Change-Id: Ic3ecfc2b601bafaab12b1805d7f9512955a8c7e2
Reviewed-on: https://go-review.googlesource.com/c/go/+/474356
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Auto-Submit: Tobias Klauser <tobias.klauser@gmail.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
src/syscall/exec_linux.go
src/syscall/exec_linux_test.go